今更のネタですが、先日思い出すのが面倒だったので書き留めておこうと思いました。
.ps1
はセキュリティやら何やらの都合で、単純にダブルクリックするだけでは実行できないようになっています。
ただ、実用的にはダブルクリックで実行できた方が使い勝手が良いことも多いです。
直接実行できないのであれば、伝統的な .bat
から呼び出してやれば良いのです。簡単ですね。
以下のバッチファイルは、同じフォルダの同じファイル名(%~dpn0
)の .ps1
ファイルを実行します。
@echo off
powershell -ExecutionPolicy Bypass -NoProfile -File %~dpn0.ps1 %*
if %errorlevel% neq 0 (
rem 終了コードが 0 以外の場合は一時停止する
pause
)
また、フォルダの中にいくつも .ps1
と .bat
が並ぶと見苦しいので、.ps1
は別のフォルダにまとめたいときがあります。
例えば ps1
フォルダにまとめたいときは、パスの部分を以下のように調整します。
@echo off
rem 暗号のように見える部分について
rem %0 は実行されているバッチファイル自身を表します
rem ~ は書式オプションを使う場合に指定します
rem dp は %0 の設置されているディレクトリパスを示す書式オプションです。
rem n は %0 の拡張子無しのファイル名を示す書式オプションです。
rem powershell -ExecutionPolicy Bypass -NoProfile -File %~dpn0.ps1 %*
powershell -ExecutionPolicy Bypass -NoProfile -File %~dp0\ps1\%~n0.ps1 %*
if %errorlevel% neq 0 (
rem 終了コードが 0 以外の場合は一時停止する
pause
)
以上