.ps1 ファイルと同じ名前の単純な .cmd ファイルをサブフォルダーに配置します。たとえば、「foobar」という名前のスクリプトには、「foobar.ps1」と「foobar.cmd」が含まれます。したがって、.ps1 を実行するには、エクスプローラーから .cmd ファイルをクリックするか、コマンド プロンプトから .cmd を実行するだけです。.cmd ファイルは独自の名前を使用して .ps1 を自動的に検索するため、同じベース名を使用します。
::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
@echo off
for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
pushd "%SCRIPT_PATH%"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
set SCRIPT_PATH=
pause
pushd/popd を使用すると、スクリプトが配置されている特定のディレクトリに移動しなくても、コマンド プロンプトから .cmd ファイルを起動できます。スクリプト ディレクトリに変更され、完了したら元のディレクトリに戻ります。
スクリプトの終了時にコマンド ウィンドウを非表示にする場合は、一時停止を解除することもできます。
.ps1 スクリプトにパラメーターがある場合は、.NET フォームを使用して GUI プロンプトでパラメーターを要求しますが、代わりにパラメーターを渡したい場合は、パラメーターを受け入れるのに十分なほどスクリプトを柔軟にします。このようにして、エクスプローラーからダブルクリックするだけで、パラメーターの詳細を知る必要はありません。リスト ボックスやその他のフォームを使用して、必要なものを尋ねられるからです。