PowerShellで使用可能な、実行ポリシーとスコープについて解説します。
はじめに・実行ポリシーとは
本記事では、PowerShellで使用可能な実行ポリシーとスコープについて説明しています。
まず、実行ポリシーについてですが、
PowerShellにおける実行ポリシーとは、PowerShellが構成ファイルを読み込み、スクリプトの実行を制御する機能です。
この機能は、悪意のあるスクリプトの実行を防止するために導入されています。
実行ポリシーについて
ここでは、実行ポリシーについて説明しています。
実行ポリシーの一覧
実行ポリシーの一覧です。
ポリシー | 説明 |
---|---|
AllSigned | スクリプトの実行は可能ですが、ローカルコンピューターで作成されたスクリプトを含めて、全てのスクリプトと構成ファイルが信頼されている発行元によって署名されている必要があります。 |
Bypass | 何もブロックされず、警告やプロンプトは表示されません。 この実行ポリシーは、PowerShellスクリプトを大規模なアプリケーションに組み込んだり、PowerShellが独自のセキュリティ機能を持つような構成用に用意されています。 |
Default | 既定の実行ポリシーを設定します。Windows10の既定値は「Restricted」です。 |
RemoteSigned | インターネットからダウンロードされた全てのスクリプトと構成ファイルが信頼されている発行元によって署名されている必要があります。 WindowsServerの既定の実行ポリシーです。 |
Restricted | 個々のコマンドは許可しますが、構成ファイルの読み込みやスクリプト(.ps1/.ps1xml/.psm1)の実行を行いません。 Windowsクライアントの既定の実行ポリシーです。 |
Undefined | 現在のスコープに割り当てられている実行ポリシーを削除します。 グループポリシースコープ内で設定された実行ポリシーは削除しません。 全ての実行ポリシーが、Undefinedとなる場合は、実行ポリシーは、Restrictedとなります。 |
Unrestricted | 全ての構成ファイルの読み込みやスクリプトを実行します。 インターネットからダウンロードした署名のないスクリプトを実行すると、実行する前に確認メッセージが表示されます。 |
実行ポリシーの確認方法
現在の実行ポリシーを確認する方法を説明します。
以下のコマンドを実行し、表示された結果が実行ポリシーとなります。
PS C:\workspace\PowerShell> Get-ExecutionPolicy Restricted
今回の場合、実行ポリシーは「Restricted」ということになります。
実行ポリシーの設定方法
実行ポリシーの設定方法を説明します。
実行ポリシーを設定する際の書式です。
Set-ExecutionPolicy -ExecutionPolicy 設定する実行ポリシー
以下は、実行ポリシーを「RemoteSigned」に設定する例になります。
PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
スコープについて
ここでは、スコープについて説明しています。
スコープとは、設定する実行ポリシーの影響範囲です。
スコープの一覧
スコープの一覧です。
スコープ | 説明 |
---|---|
MachinePolicy | コンピューターの全てのユーザーのグループポリシーによって設定されます。 |
UserPolicy | コンピューターの現在のユーザーのグループポリシーによって設定されます。 |
Process | 実行ポリシーは、現在のPowerShellプロセスのみに影響します。 また、実行ポリシーはレジストリではなく環境変数($env:PSExecutionPolicyPreference)に保存されます。 PowerShellセッションが閉じられると、変数と値が削除されます。 |
CurrentUser | 実行ポリシーは、現在のユーザーのみに影響します。 設定は、HEKY_CURRENT_USERレジストリのサブキーに格納されます。 |
LocalMachine | 実行ポリシーは、コンピューター上の全てのユーザーに影響します。 設定は、HKEY_LOCAL_MACHINEレジストリのサブキーに格納されます。 |
スコープの確認方法
スコープに設定されている実行ポリシーを確認する方法を説明します。
確認方法は様々なものがありますが、
まずはスコープと、そのスコープに対応した実行ポリシーの一覧を表示するコマンドになります。
PS C:\workspace\PowerShell> Get-ExecutionPolicy -List Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Restricted CurrentUser Undefined LocalMachine Restricted
次に、指定したスコープに対応した実行ポリシーを確認するコマンドになります。
PS C:\workspace\PowerShell> Get-ExecutionPolicy -Scope Process Restricted
今回の場合、スコープ「Process」に対応する実行ポリシーは「Restricted」ということになります。
スコープの設定方法
スコープの設定方法を説明します。
スコープを設定する際の書式です。
Set-ExecutionPolicy -ExecutionPolicy 設定する実行ポリシー -Scope スコープ
以下は、スコープを「Process」、実行ポリシーを「RemoteSigned」に設定する例になります。
PS C:\workspace\PowerShell> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
記事は以上です。実行ポリシーについて、より詳しく知りたい方は下記のマイクロソフト公式サイトをご覧ください。
コメント