主題
    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





目錄