2018年1月18日木曜日

PowerShellスクリプト(.ps1)をバッチファイル(.bat)として実行したい

PowerShellスクリプト(.ps1)をバッチファイル(.bat)として実行したい。

そのような場合には、以下を1行目に追記する。

@setlocal enableextensions enabledelayedexpansion & set "PATH0=%~f0" & PowerShell.exe -Command "& (Invoke-Expression -Command ('{#' + ((Get-Content '!PATH0:'=''!') -join \"`n\") + '}'))" %* & exit /b !errorlevel!

以下、具体例。

@setlocal enableextensions enabledelayedexpansion & set "PATH0=%~f0" & PowerShell.exe -Command "& (Invoke-Expression -Command ('{#' + ((Get-Content '!PATH0:'=''!') -join \"`n\") + '}'))" %* & exit /b !errorlevel!

# 以下、PowerShellスクリプト
while (1) {
  Get-Date
  Start-Sleep 1
}

以上の内容をtest.bat等適当な名前で保存、実行すれば、
PowerShellをバッチファイルとして実行できます。


参考
https://www.pg-fl.jp/program/tips/ps1bat2.htm