現象
Windows10にyarnをインストールして、Visual Studio Code(以下VScode)でTerminalを開き、yarnのバージョンを確認するために以下を入力するとエラーメッセージが出た。
> yarn -v
yarn : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\{PC名}\AppData\Roaming\npm\yarn.ps1 を読み込むことができません。詳細については、「about_Ex
ecution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ yarn -v
+ ~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
コマンドプロンプト(以下CMD)では、バージョンが表示された。
> yarn -v
1.22.17
VScodeでTerminalを開くとデフォルトでPowerShellが開いていることが判明。
そして、PowerShellには実行ポリシーというものが設定されていて、実行できるコマンドに制約がある模様。
参考:https://qiita.com/tomoko523/items/df8e384d32a377381ef9
ポリシーを変更するにはPowerShellを管理者として開く必要があるため、VScodeのTerminalからではなく、PowerShellを検索して右クリックして管理者として実行する必要がある。(面倒)
yarn.ps1は署名が付いていないみたいなので、ポリシーはRemoteSignedに変更してみる。
> Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
コマンドを打った後、[Y]を選択するとポリシーが変更される。
以下のコマンドでポリシーが確認できる。
> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
VScodeに戻ってTerminal上でyarn -vと打ってみると無事にバージョンが表示された。