【PowerShell】Set-ExecutionPolicy RemoteSignedしたら、「レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\Shell Ids\Microsoft.PowerShell' へのアクセスが拒否されました」と怒られた


症状

「Set-ExecutionPolicy-RemoteSigned」で実行ポリシーを変更しようとしたところ、下記エラーが発生してしまいました。

> Set-ExecutionPolicy RemoteSigned
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\Shell
Ids\Microsoft.PowerShell' へのアクセスが拒否されました。 既定 (LocalMachine) のスコープの実行ポ 
リシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してくだ 
さい。現在のユーザーの実行ポリシーを変更するには、"Set-ExecutionPolicy -Scope CurrentUser" を実 
行してください。
発生場所 行:1 文字:1
+ Set-ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessE  
   xception
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands  
   .SetExecutionPolicyCommand

「既定 (LocalMachine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してください。」とあり、既定 (LocalMachine)のスコープで実行をポリシーを変更しようとしても、そんな権限内から、管理者として実行して、権限がある状態で変更してねと言われています。
つまり、顕現不足のエラーです。

念のため、実行ポリシーも確認してみます。

実行ポリシーの確認
> Get-ExecutionPolicy
Restricted

実行ポリシーがRestricted(すべてのスクリプトが制限される)になっていました。

解決策

PowerShell を[管理者として実行する]から起動し、”Set-ExecutionPolicy” することで、実行ポリシーを変更できました。

まず、PowerShellを管理者として実行します。

PowerShell 画面に、「管理者」と書いてあることを確認。

Set-ExecutionPolicy
> 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

これで実行ポリシーが変更されたました。念のため、確認してみます。

> Get-ExecutionPolicy
RemoteSigned

RemoteSigned( ローカルのファイルは実行可能)になっていることが確認できました。

参考