亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

Windows PowerShell ISEでスクリプトをデバッグしたいが、実行ポリシーエラーになるときの対処

1.はじめに

テキストエディタで作成したPowerShellスクリプトデバッグしようと、Windows PowerShell ISEで開いてみた。ブレークポイントを張って、F5キーで開始してみたところ、以下のようなメッセージが表示されデバッグが出来なかった。

PS C:\temp> C:\temp\test.ps1
このシステムではスクリプトの実行が無効になっているため、ファイル C:\temp\test.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
    + CategoryInfo          : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

ポリシーを確認してみる。

PS C:\temp> Get-ExecutionPolicy
Restricted

Restricted(すべてのスクリプトの実行を制限)では実行できなくて当然だ。

このような経緯で、Windows PowerShell ISE内で実行ポリシーを変更してデバッグできる状態にするために悩んだ履歴を記載する。

2.環境

PowerShellのバージョンは以下の通り。

PS C:\Users\hisabo> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
・・・以下、略・・・

3.目指すところ

4.やってみよう

ポリシーの変更をしてみる

ポリシーを変更しようと、Windows PowerShell ISEで以下をやってみる。

PS C:\temp> PowerShell Set-ExecutionPolicy RemoteSigned

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

管理者として実行するか、現在のユーザーの実行ポリシーを変更する必要があるようだ。

解決策

以下を一発かまして、現在のユーザーの実行ポリシーを変更する(RemoteSigned)。

PS C:\temp> PowerShell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Windows PowerShell ISEを再起動してみても、この設定は変わらないようだ。つまり、一度行えば良い。これで、PowerShellスクリプトWindows PowerShell ISEでデバッグできるようになった。

考えてみれば、PowerShellコンソールでも同様だ。ISEだから特別ということはない。

終.獲得した知識