見出し画像

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 #実行ポリシー


タスクスケジューラの具体的な設定例はこちら



いいなと思ったら応援しよう!