ActiveXPosh
InfoQの記事で「ActiveXPosh」というのが紹介されていた。
これはVBScriptやJScriptからPowerShellを呼び出せるようにしたもの。やってることはPowerShellをCOMでラップしてCOM対応言語から呼び出せるラッパーを作ったということなのかな。
ということはVB6やDelphiとかからも呼び出せるのね。
とりあえず使ってみた。ダウンロードは以下のリンクから
使ってみる
「posh.vbs」というファイルを作って、以下のコードを記述する。
posh.vbs
Set objPosh = CreateObject("SAPIEN.ActiveXPosh") ' プロファイルを読み込む場合はvbTrueを指定する objPosh.Init vbFalse objPosh.Execute "dir"
コンソールで「cscript」を使ってスクリプトを実行すると、以下のように出力される(cscriptを使っているのはVBScriptからの出力をコンソールにリダイレクトするため)。
PS > cscript posh.vbs //nologo ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/07/11 15:10 Documents and Settings d---- 2008/02/13 16:24 Inetpub d-r-- 2008/07/24 8:46 Program Files d---- 2008/06/24 10:35 temp d---- 2008/07/15 9:03 WINDOWS -a--- 2006/10/04 19:02 0 AUTOEXEC.BAT -a--- 2006/10/04 19:02 0 CONFIG.SYS -a--- 2008/01/24 10:54 0 _dummy
だから、この出力結果をパイプでつないで、
cscript posh.vbs //nologo | % { $_.Name }
なんてのはできないので注意!!普通に文字列として扱うような処理ならできるけどね。
いまいちこれを使う場面がイメージできない*1けどネタとしてはおもしろい。
*1:PowerShellがインストールされていないと使えないのなら素直にPowerShell使えよと