Open1
PowerShellの実行権限について
結論
# (書き方)Set-ExecutionPolicy -ExecutionPolicy <実行ポリシー> -Scope <スコープ>
# 下記を実行し、実行ポリシーを変更する
PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック
(https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
# 確認してみる
PS C:> Get-ExecutionPolicy
RemoteSigned
# もう一度動かしてみる
PS C:> hoge.ps1
動いた!
参照:
なお、プロセスが終了すると、実行ポリシーは元に戻るため、次に使う時は再度実行ポリシーの変更が必要
経緯
PowerShellでnpmコマンドを実行しようとしたところ下記のエラーが出た。
npm : このシステムではスクリプトの実行が無効になっているため、ファイル hoge.js を読み込むこと
ができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ npm run dev
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
原因
PowerShellには、実行ポリシーというものがあり、これは、PowerShellが構成ファイルを読み込み、スクリプトを実行する条件を制御し、悪意のあるスクリプトの実行を防止する役割があるそう。
これにより、実行ポリシーに反する、ユーザーの意図しない実行を防ぐことができる。
Windowsクライアントコンピュータのデフォルト実行ポリシーはRestrictedになっており、
個々のコマンドは許可されるが、スクリプトは許可されない状態となっている。