2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« PowerShellの.PS1ファイルをバッチファイル化する。(その1) | トップページ | PowerShellでソースファイルをインクルードする。 »

2007年8月20日 (月)

PowerShellの.PS1ファイルをバッチファイル化する。(その2)

(その1)では、引数が渡りません。そこで、引数を、環境変数経由で渡します。

.PS1ファイルの先頭に3行、末尾に空行を加えて、拡張子を.CMDに変えます。

@SET args=%* & MORE +1 %0 | powershell.exe -command - & GOTO:EOF
function getargs {$xargs=$args}
iex ". getargs $env:args"
    $xargs.gettype()
    $xargs.length
    foreach($arg in $xargs){$arg}
(空行)

この例では、環境変数argsを$xargsに取り出します。
元のスクリプトは、$argsの代わりに$xargsを参照するように変えます。

或いは、元のスクリプトを関数に括って呼び出せば、引数を$argsのまま参照できます。

.PS1ファイルの先頭に2行、末尾に2行を加えて、拡張子を.CMDに変えます。

@SET args=%* & MORE +1 %0 | powershell.exe -command - & GOTO:EOF
function main {
    $args.gettype()
    $args.length
    foreach($arg in $args){$arg}
} iex "main $env:args"
(空行)

« PowerShellの.PS1ファイルをバッチファイル化する。(その1) | トップページ | PowerShellでソースファイルをインクルードする。 »