about_Script_Blocks

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0

トピック

about_Script_Blocks

概要

スクリプト ブロックの概要を示し、Windows PowerShell® プログラミング言語でスクリプト ブロックを使用する方法について説明します。

詳細説明

Windows PowerShell プログラミング言語では、スクリプト ブロックは 1 つの単位として使用できるステートメントまたは式のコレクションです。スクリプト ブロックは引数を受け取り、値を返します。

次の構文に示すように、スクリプト ブロックは構文上は中かっこで囲まれたステートメント リストです。

        {<statement list>}

スクリプト ブロックは、スクリプト ブロック内のすべてのコマンドの出力を 1 つのオブジェクトまたは配列として返します。

スクリプト ブロックには、関数のようにパラメーターを含めることができます。次の構文に示すように、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 コマンドレットにはスクリプト ブロックの値を取る 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 コマンドレットの 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."}

次の例に示すように、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