PowerShell ps1ファイルが実行できないのをなんとかする
Windows10/11の場合、通常は制限が掛かっていてPowerShellのスクリプトファイル(.ps1)が実行できないようになっています。
PS C:\> c:\temp\test.ps1
c:\temp\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\temp\test.ps1 を読み込むことがで
きません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してくださ
い。
発生場所 行:1 文字:1
+ c:\temp\test.ps1
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
特にタスクスケジューラからps1ファイルを実行したいとき、この制限で引っ掛かります。
この制限を回避するためにPowerShell を呼び出すときに
引数に -ExecutionPolicy をつけます。
例は次の通り
powershell -ExecutionPolicy Bypass c:\temp\test.ps1
「-ExecutionPolicy Bypass 」の部分で実行制限を解除しています。
Bypassの部分は他に次のようなものがあります
All Signed 署名があるスクリプトを許可。
Remote Signed 端末内に保存されたスクリプト、または、インターネットからダウンロードしたもののうち、署名があるスクリプトは許可。
Restricted 構成ファイルのロードやスクリプトの実行は行いません。Undefined 実行ポリシーが設定されていません。スクリプトの実行は行いません。
Unrestricted 署名されていないスクリプトも含めて実行許可。インターネットからダウンロードしたものは明示的な許可が必要。
Bypass すべてのスクリプトの実行を許可。
このような制限を実行ポリシーと呼びます。
「Get-ExecutionPolicy -List」を実行すると現在の設定が分かります。
多少のセキュリティを犠牲にしても便利にしたい場合は次のスクリプトを一度だけ実行してCurrentUserのポリシーを「Remote Signed」にします。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
#PowerShell #プログラミング学習 #プログラミング入門 #コマンドレット #Windows #IT #実行ポリシー
タスクスケジューラの具体的な設定例はこちら