🐟

[Angular][環境構築][エラー] PowerShellでngコマンドが使えない

に公開

やりたいこと

PowerShellでngコマンドを使いたい

ng --version

エラー内容

ng --version
ng : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\〇〇\AppData\Roaming\npm\ng.p
s1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/? 
LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ ng --version
+ ~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

原因

実行ポリシーによってスクリプトの実行がブロックされているためです。
現在の設定を確認します。

Get-ExecutionPolicy
Restricted

Restrictedになっていました。

Restricted

  • 個々のコマンドは許可されますが、スクリプトは許可されません。
  • 書式設定と構成ファイル (.ps1xml)、モジュール スクリプト ファイル (.psm1)、PowerShell プロファイル (.ps1) など、すべてのスクリプト ファイルの実行を防止します。

解決策

以下のコマンドを PowerShell に入力して、実行ポリシーを緩和します。
「現在のユーザーだけ」に対して「RemoteSigned」に変更するものです。

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

RemoteSigned

  • Windows コンピューターの既定の実行ポリシー。
  • スクリプトは実行できます。
  • メールやインスタント メッセージ プログラムを含むインターネットからダウンロードされるスクリプトや構成ファイルには、信頼できる発行者からのデジタル署名が必要です。
  • インターネットからダウンロードされたものではなく、ローカル コンピューターに書かれたスクリプトにはデジタル署名は必要ありません。
  • Unblock-File コマンドレットを使用するなどしてスクリプトのブロックが解除された場合、インターネットからダウンロードされた符号なしのスクリプトを実行します。
  • インターネット以外からの符号なしのスクリプトや、悪意のある可能性のある符号のあるスクリプトを実行するリスク。

これによりPowerShellでもngコマンドが使えるようになりました。

参考

about_Execution_Policies - PowerShell

Discussion