はじめに
PowerShellには実行ポリシーという概念があります。普段なんとなくUnrestricted
にしとけばいいや、と思っている人も多いのではないでしょうか。
今回は、どういったケースで実行ポリシーを選択すべきか整理したメモを残しておきます。
実行ポリシーとは
実行ポリシーとはなんぞや、という方は以下の記事を参照してください。
実行ポリシーの選び方
よくあるケースとしては、管理者権限が剥奪されているが、グループポリシーで PowerShell の実行ポリシーまでは制限されていないという状態でしょう。この場合、まずは Process スコープの実行ポリシーのみを RemoteSigned とするのが良いでしょう。CurrentUser や LocalMachine の実行ポリシーが Restricted になっていたとしても、現在の PowerShell セッション内であればスクリプトを実行することができます。
逆に、一度 PowerShell を閉じてしまうと Process スコープの設定値は Undefined(=Default=Restricted)に戻ってしまうので、スクリプト実行頻度が高く煩わしい場合には CurrentUser スコープを RemoteSigned とするのが良いでしょう。こうすることで、PowerShell を閉じたり、PC を再起動したとしても、CurrentUser の設定値が元に戻ってしまうことはありません。
インターネットから取得したスクリプトを直接使用する場合には、PowerShell プロセス生成時に実行ポリシーを Unrestricted とすると良いでしょう。インターネット上に公開されたスクリプトは便利ですが、悪意のあるコマンドが含まれていないとは限りません。スクリプトの内容は精査した上で、実行するように心がけましょう。
なお、管理者権限でスクリプトを実行する場合は、実行ポリシーが Restricted となっている場合でも実行できてしまうことは覚えておきましょう。
役に立ったなと思った方はビール1杯奢ってください。