■このサイトはPowerShell(MSH/Monad)奮闘記です
管理人「newpops(吉岡洋)」が「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。
【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。
2005-09-27
■[MSH]ScriptBlockを実行する
「{」と「}」で囲んだScriptBlockは変数に代入できます。
また、Invokeメソッドで実行も可能です。
ScriptBlockを実行する(引数なし)
MSH C:\> $a = {get-date}
MSH C:\> $a.Invoke()
2005年9月27日 0:28:28
- ScriptBlockを代入した「$a」の型は「System.Management.Automation.ScriptBlock」です。
基本構文(12) - PowerShell Memoで書いた「&(アンバサンド)」でも似たようなことができますね。
MSH C:\> $a = "get-date" MSH C:\> &$a 2005年9月27日 0:29:28
ScriptBlockを実行する(引数あり)
MSH C:\> $b = {write-host $args}
MSH C:\> $b.invoke(1, 2, 3, 4)
1 2 3 4
MSH C:\> $b = {write-host $args[0]}
MSH C:\> $b.invoke("TEST")
TEST
「&(アンバサンド)」では引数は受け取れないようです。
MSH C:\> $b = "write-host $args[0]"
MSH C:\> &$b("TEST")
'write-host [0]' is not recognized as a Cmdlet,
function, operable program, or script file.
At line:1 char:2
+ &$ <<<< b("TEST")
- $argsが変数展開される・・・って当たり前か。(^^;



