ScriptBlockを実行する(2)
ScriptBlockを実行する - PowerShell Memoで、「&(アンバサンド)」では引数は受け取れないようです。
と書きましたが、それは正しくはありませんでした。
文字列形式のスクリプトに対して、「&」で引数は取れませんが、
ScriptBlockに対しては、「&」でも引数を受け取れます。
「&」でScriptBlockを実行する(引数あり)
MSH C:\> $b = {write-host $args} MSH C:\> &$b(1, 2, 3, 4) 1 2 3 4
PARAMで引数を受け取る
以下の書き方でもScriptBlockで引数を受け取ることができます。functionと同じですね。
MSH C:\> $x = {PARAM ([String]$Name, [int]$Id) "Name = $Name : Id = $Id"} MSH C:\> &$x -Name "newpops" -Id 100 Name = newpops : Id = 100
【追記】
oka326さんから頂いたコメントによると、
「&」は外部プログラムやCmdlet呼び出しと同じ形式で引数を渡せばOKのようです。
なるほど。
MSH C:\> $a = { "Hello" + $Args[0] } MSH C:\> &$a World HelloWorld