shuhelohelo’s blog

Xamarin.Forms多めです.

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のポリシーを変更する必要があるよう。

こちらのサイトが詳しい。↓

kaede.jp

実行ポリシーを確認する

まずは現在の実行ポリシーを確認する。 そのためには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

これでスクリプトを実行できるようになります。 ポリシーの変更は自分の目的、用途に合わせて慎重に検討すること。