【PowerShell】C#から実行した時にエラーが出たときの対処法

LOG//046技術読了 3 分

この記録は最終更新から 9 年以上経っています。内容が今の環境と違う場合があります。

「【PowerShell】C#から実行した時にエラーが出たときの対処法」のアイキャッチ画像

C#からPowerShellを実行しようとした時にエラーが発生したので、対処法のメモ…

現象

C#からhoge.ps1を実行しようとしたところ、下記のエラーが発生しました。

ハンドルされていない例外: System.Management.Automation.PSSecurityException: このシステムではスクリプトの実行が無効になっているため、ファイル Verb-Noun.ps1 を読み込むことができません。

実行前に設定した内容

下記のコマンドを管理者権限で実行したPowerShellで入力し、実行ポリシーを「RemoteSigned」に変更していた。

Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

Get-ExecutionPolicy
RemoteSigned

解決方法

これではまだ準備が足りないようで-Scopeオプションを追加して
実行する必要があるらしい…

Get-ExecutionPolicy -Scope CurrentUser
Undefined

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

Get-ExecutionPolicy -Scope CurrentUser
RemoteSigned

色々とわからんことばかり…