about_Script_Blocks
適用於: Windows PowerShell 2.0, Windows PowerShell 3.0
主題
about_Script_Blocks
簡短描述
定義何謂指令碼區塊,並說明如何在 Windows PowerShell® 程式設計語言中使用指令碼區塊。
詳細描述
在 Windows PowerShell 程式設計語言中,指令碼區塊是可當做單一單位使用之陳述式或運算式的集合。指令碼區塊可以接受引數和傳回值。
語法上,指令碼區塊是以大括弧括住的陳述式清單,如下列語法所示:
{<statement list>}
指令碼區塊會以單一物件或陣列形式,傳回指令碼區塊中所有命令的輸出。
如同函式,指令碼區塊可以包含參數。使用 Param 關鍵字可指派具名參數,如下列語法所示:
{
param ([type]$parameter1 [,[type]$parameter2])
<statement list>
}
但不同於函式,您無法在指令碼區塊中指定未以大括弧括住的參數。
如同函式,指令碼區塊可以包含 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