about_Script_Blocks
トピック
about_Script_Blocks
簡易説明
スクリプト ブロックとは何かを定義し、Windows PowerShell プログラミング言語でスクリプト
ブロックを使用する方法について説明します。
詳細説明
Windows PowerShell プログラミング言語におけるスクリプト ブロックとは、1 つの単位として
使用できるステートメントまたは式の集合です。スクリプト ブロックは、引数を受け取り、値を返す
ことができます。
構文的には、スクリプト ブロックは、中かっこで囲まれたステートメント リストです。次の構文に例
を示します。
{<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 コマンド
レットには、次の例に示すように、スクリプト ブロック値を受け取る 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