淺談 PowerShell

腳本 Scripts

相當於以前的 .bat 批次檔

修改執行政策(Execution Policy)

Windows 基於安全因素
對腳本執行政策(Execution Policy)設定了不同原則

  • Restricted:所有腳本都不能執行
  • AllSigned:所有腳本都要簽署後才能執行
  • RemoteSigned:僅遠端下載的腳本需要簽署
  • Unrestricted:無限制


系統預設是 Restricted
所以執行指令碼會出現以下訊息:
「因為這個系統上已停用指令碼執行,所以無法載入xxx檔案」

查看目前執行政策

Get-ExecutionPolicy

修改執行政策
必須以系統管理員身份執行 PowerShell

Set-ExecutionPolicy RemoteSigned

確定?A (accept)

撰寫 HelloWorld 程式

param ($UserName = "World")
$Message = "Hello " + $UserName + "!"
Write-Output $Message

存成 HelloWorld.ps1

呼叫

在 PowerShell 中輸入完整檔名即可執行(不需引號)

D:\HelloWorld.ps1

也能指定參數

D:\HelloWorld.ps1 Tony
D:\HelloWorld.ps1 -UserName Tony

模組 Module

可以更符合物件導向的概念

撰寫 HelloWorld 程式

function Say-Hello($UserName = "World") {
    $Message = "Hello " + $UserName + "!"
    Write-Output $Message
}

存成 HelloWorld.psm1

呼叫

在 PowerShell 中先 Import 模組檔案

Import-Module "D:\HelloWorld.psm1"

之後就能直接呼叫 function 並給予參數

Say-Hello Tony