about_Script_Blocks
主題
about_Script_Blocks
簡短描述
定義何謂指令碼區塊並說明如何在 Windows PowerShell 程式語言中使用指令碼區塊。
完整描述
在 Windows PowerShell 程式語言中,指令碼區塊是一組陳述式或運算式集合,可以
視為一個單位來使用。指令碼區塊可以接受引數並傳回值。
在語法上,指令碼區塊是大括號中的陳述式清單,如下列語法所示:
{<陳述式清單>}
一個指令碼區塊會傳回其中所有命令的輸出,此輸出可能是單一物件,也可能是陣列。
指令碼區塊和函數一樣可以包含參數。請使用 Param 關鍵字來指定具名參數,如下
列語法所示:
{
param ([type]$parameter1 [,[type]$parameter2])
<陳述式清單>
}
在指令碼區塊中,您不能像函數一樣在大括號外指定參數。
指令碼區塊和函數一樣可以包含 DynamicParam、Begin、Process 和 End 等關鍵字。
如需詳細資訊,請參閱 about_Functions 和 about_Functions_Advanced。
使用指令碼區塊
指令碼區塊是 Microsoft .NET Framework 型別的執行個體
(System.Management.Automation.ScriptBlock)。命令可以包含指令碼區塊參
數值。例如,Invoke-Command Cmdlet 具有可接受指令碼區塊值的 ScriptBlock
參數,如下列範例所示:
C:\PS> invoke-command -scriptblock { get-process }
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
999 28 39100 45020 262 15.88 1844 communicator
721 28 32696 36536 222 20.84 4028 explorer
. . .
用來當做值的指令碼區塊可能更為複雜,如下列範例所示:
C:\PS> invoke-command -scriptblock { param ($uu = "Parameter");
"$uu assigned." }
Parameter assigned.
前述範例中的指令碼區塊會使用 Param 關鍵字建立具有預設值的參數。下列範例
則會使用 Invoke-Command Cmdlet 的 Args 參數,將不同的值指定給該參數:
C:\PS> invoke-command -scriptblock {param ($uu = "Parameter");
"$uu assigned."} -args "Other value"
Other value assigned.
您可以將指令碼區塊指定給變數,如下列範例所示:
C:\PS> $a = {param ($uu = "Parameter"); "$uu assigned."}
您可以將此變數與 Cmdlet (例如 Invoke-Command) 搭配使用,如下列範例所示:
C:\PS> invoke-command -scriptblock $a -args "Other value"
Other value assigned.
您可以使用呼叫運算子 (&),執行指定給變數的指令碼區塊,如下列範例所示:
C:\PS> &$a
Parameter assigned.
您也可以提供參數給指令碼區塊,如下列範例所示:
C:\PS> &$a "Other value"
Other value assigned.
如果您要將指令碼區塊建立的值指定給變數,請使用呼叫運算子直接執行指令碼區
塊,如下列範例所示:
C:\PS> $a = &{param ($uu = "Parameter"); "$uu assigned."}
C:\PS> $a
Parameter assigned.
如需呼叫運算子的詳細資訊,請參閱 about_Operators。
請參閱
about_Functions
about_Functions_Advanced
about_Operators