目次
検証環境
- Windows 11 Pro (24H2)
- Windows PowerShell PSVersion 5.1.26100.7705
PowerShellスクリプトファイル(.ps1)の実行は面倒
正攻法だと、いちいち権限変えてから実行しなきゃいけなくて、とても面倒
じゃあ権限変更を含め、実行するバッチファイルを添えればいいじゃないか!!という発想
指定した権限は実行する時のみ有効
権限戻し忘れとか心配しなくて良いからいいね!!(自画自賛)
同じフォルダにあるこのバッチファイル(.bat)と同名のPowerShellスクリプトファイル(.ps1)を実行
バッチファイルなので、文字コードはShift-JIS、改行はCR+LFで
使い方は、この.batファイルを、実行したい.ps1ファイルと同じ名前にする
例えば実行したい.ps1ファイルが「hogehoge.ps1」だったとすると
バッチファイルは「hogehoge.bat」にする…あらやだ簡単!!
@echo off
setlocal
:: ---------------------------------------
:: 同じフォルダにあるこの「.bat」と同名の「.ps1」ファイルをpowershellコマンドとして実行
::
:: [%~n0]はこのバッチファイルのファイル名を拡張子無しで取得
:: [%~dp0]はこのバッチファイルのディレクトリを取得
:: スペース入りファイルパスを想定し["]で囲う
:: ---------------------------------------
set batnameonly=%~n0
set ps1filename="%~dp0%batnameonly%.ps1"
:: ファイル存在チェック
if not exist "%ps1filename%" (
echo ファイルが存在しません
echo %ps1filename%
pause
exit /b 1
)
powershell -ExecutionPolicy Unrestricted -File %ps1filename%
権限(ExecutionPolicy)について
このバッチファイルは、PowerShellの権限を「Unrestricted」でPowerShellスクリプトファイル(.ps1)を実行しています
もうちょい上位の、何でも動いちゃう「Bypass」とかいうのもありますが
それはなんか嫌なので一歩下がって「Unrestricted」にしといてます
もう一歩下がるなら、デフォルトと同じ「RemoteSigned」「Default」を使っても良いかもしれません
…「Unrestricted」以外はあんまり使ってないので、しらんけどwww
トラックバック URL
https://moondoldo.com/wordpress/wp-trackback.php?p=13600