PowerShellでスクリプト実行時にセキュリティエラーが出る場合
コマンドプロンプトからだと実行できていたのに、PowerShellで実行しようと思ったら以下のようなエラーが出て実行できなかった。
PS C:\Users\shuhey\Desktop> mix new my_project mix : ファイル C:\Program Files (x86)\Elixir\bin\mix.ps1 を読み込めません。ファイル C:\Program Files (x86)\Elixir\bin\m ix.ps1 はデジタル署名されていません。このスクリプトは現在のシステムでは実行できません。スクリプトの実行および実行ポリシ ーの設定の詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してくださ い。 発生場所 行:1 文字:1 + mix new my_project + ~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
これに対してはPowerShellのポリシーを変更する必要があるよう。
こちらのサイトが詳しい。↓
実行ポリシーを確認する
まずは現在の実行ポリシーを確認する。
そのためにはGet-ExecutionPolicy
コマンドを使う。
自分の環境ではAllSinged
と表示され、調べてみるとこれは「デジタル証明書で書名されたファイルのみ実行可能」とのこと。
PS C:\Users\shuhey> Get-ExecutionPolicy AllSigned
では、上のサイトを参考にして、これを「インターネットからダウンロードしたファイルを実行する場合、警告を表示」するUnrestricted
に変更する。
実行ポリシーを変更する
それにはSet-ExecutionPolicy
コマンドを使う。これを実行するためには管理者権限が必要なので、PowerShellを管理者として実行します。
そして以下のコマンドを実行し、はい、を選ぶ。
PS C:\WINDOWS\system32> set-executionpolicy unrestricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
これでスクリプトを実行できるようになります。 ポリシーの変更は自分の目的、用途に合わせて慎重に検討すること。