見出し画像

【c#】C#からPowerShell実行時のエラー対処方法

状況

C#からxxxxx.ps1を実行しようとしたところ、次のエラーが発生。
ハンドルされていない例外: System.Management.Automation.PSSecurityException: このシステムではスクリプトの実行が無効になっているため、ファイル test.ps1 を読み込むことができません。
サイトを検索するとpowershellの権限の問題とのことから確認を行い変更した。

原因

powershellの権限が RemoteSigned である必要がある。
また、権限が RemoteSigned であってもエラーとなることが判明した。

powershellの権限

実行ポリシー 署名有 署名無local 署名無非local
Restricted            x     x               x        
全てのスクリプトの実行を制限 (初期設定)

AllSigned           〇          x                  x                     
署名のあるスクリプトのみ実行可

RemoteSigned   〇        〇                  x                     
ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可

Unrestricted      〇         〇                  △                   
すべてのスクリプトが実行可
非ローカル上のスクリプトは実行時に許可が必要

Bypass              〇         〇                  〇                     
すべてのスクリプトが実行可能

作業

powershellを起動して権限設定を変更します。
1.powershellのアイコンを右クリックして管理者権限で実行(起動)する
2.Get-ExecutionPolicy と入力して現在の権限(有効な実行ポリシー)を確認
3.次のコマンドを入力して権限を変更する。
  Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
4.-scope がないと RemoteSigned であってもエラーとなるのがポイントです。

参考url

この記事が気に入ったらサポートをしてみませんか?