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.目指すところ
- Windows PowerShell ISE内の実行ポリシーを変更して、PowerShellスクリプトをデバッグする
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だから特別ということはない。
終.獲得した知識
- Windows PowerShell ISEの実行ポリシーを変更してデバッグする方法