PowerShellの.PS1ファイルをバッチファイル化する。(その1)
PowerShellの.PS1ファイルをそのまま他人に渡しても、それを実行するには、いろいろと設定が必要で、困ります。
そんなときは、.PS1ファイルをバッチファイルにラップするとよいでしょう。
これなら、ExecutionPolicyがRestrictedのままでも、実行できます。
.PS1ファイルの先頭に1行、末尾に空行を加えて、拡張子を.CMDに変えます。
@MORE +1 %0 | powershell.exe -command - & GOTO:EOF
if(1){
write-output hoge
}
(空行)
この例で、もし、空行がないと、write-output hogeが実行されません。
標準入力からのコマンドの読み込み/解釈/実行の単位は、「単行モード」と「継続行モード」の二つがあります。
一行読んで、もし、一行で完結してないときは、「継続行モード」に切り替わり、それが空行まで続きます。
大概は、空行の追加でうまく行きますが、以下のような、一見、一行で完結してそうな紛らわしい記述があると駄目です。:-(
if(){~}
else{~}
« PowerShellで、列挙子(Enumerator)を配列(Array)に戻す。 | トップページ | PowerShellの.PS1ファイルをバッチファイル化する。(その2) »