PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2005-09-27

[]ScriptBlockを実行する

「{」と「}」で囲んだScriptBlockは変数に代入できます。

また、Invokeメソッドで実行も可能です。

ScriptBlockを実行する(引数なし)

MSH C:\> $a = {get-date}
MSH C:\> $a.Invoke()

2005年9月27日 0:28:28

基本構文(12) - PowerShell Memoで書いた「&(アンバサンド)」でも似たようなことができますね。

MSH C:\> $a = "get-date"
MSH C:\> &$a

2005年9月27日 0:29:28

ScriptBlockを実行する(引数あり)

引数を取るスクリプトも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
  • $argsで全ての引数配列として受け取れます。
  • $args[0]などで、個別に引数を受け取ることもできます。

「&(アンバサンド)」では引数は受け取れないようです。

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が変数展開される・・・って当たり前か。(^^;
Connection: close