ja-JP/about_Execution_Policies.help.txt
|
TOPIC about_Execution_Policies 簡単な説明 PowerShell の実行ポリシーと、その管理方法を説明します。 詳細な説明 PowerShell の実行ポリシーは、PowerShell が構成ファイルを読み込み、 スクリプトを実行する条件を制御する安全機能です。Windows コンピューター では、Set-ExecutionPolicy コマンドレットを使ってグループポリシー設定で 実行ポリシーを設定できます。 実行ポリシーはセキュリティシステムではありません。実行ポリシーは、 利用者が意図しないスクリプトを実行してしまうのを防ぐためのものであり、 悪意のある利用者を阻止するものではありません。実行ポリシーを回避する 方法はいくつもあるため、これは厳密なセキュリティ境界ではありません。 利用者は次のような方法で簡単に回避できます。 - スクリプトの内容を新しい PowerShell セッションにパイプで渡す。 - スクリプトの内容を読み取って実行する。 - スクリプトを実行する別のホストプログラムを使う。 PowerShell の実行ポリシーは、利用者がセキュリティポリシーを設定する のに役立てるためのものです。 実行ポリシーの種類 PowerShell の実行ポリシーは次のとおりです。 AllSigned - スクリプトは実行できますが、信頼された発行元によるデジタル署名 が必要です。 - 自分のコンピューターで作成したものを含め、すべてのスクリプトと 構成ファイルに署名が必要です。 - 信頼された発行元として分類されていない発行元のスクリプトを実行 する前に確認のプロンプトが表示されます。 - 署名されているが悪意のあるスクリプトを実行してしまうリスクが あります。 Bypass - 何もブロックされず、警告やプロンプトも表示されません。 - この実行ポリシーは、PowerShell スクリプトが、独自のセキュリティ モデルを持つより大きなアプリケーションに組み込まれている場合や、 PowerShell が独自のセキュリティを実装するプログラムの基盤と なっている場合を想定しています。 Default - 既定の実行ポリシーを設定します。 - Windows クライアントでは Restricted、Windows サーバーでは RemoteSigned となります。 RemoteSigned - Windows サーバーコンピューターの既定の実行ポリシーです。 - スクリプトは実行できます。 - インターネットからダウンロードされたスクリプトと構成ファイル (電子メールやインスタントメッセージのプログラム経由で取得した ものを含む) には、信頼された発行元によるデジタル署名が必要です。 - 自分のコンピューターで作成され、インターネットからダウンロード されていないスクリプトには、デジタル署名は不要です。 - Unblock-File コマンドレットでブロックを解除すれば、署名のない インターネット由来のスクリプトも実行できます。 - 悪意のある可能性のあるスクリプトを実行するリスクがあります。 Restricted - Windows クライアントコンピューターの既定の実行ポリシーです。 - 個々のコマンドは実行できますが、スクリプトは実行できません。 - .ps1xml 形式の構成ファイル、モジュールスクリプトファイル (.psm1)、PowerShell プロファイル (.ps1) を含め、すべての スクリプトファイルの実行を防ぎます。 Undefined - 現在のスコープに実行ポリシーが設定されていません。 - すべてのスコープの実行ポリシーが Undefined の場合、有効な実行 ポリシーは、Windows クライアントでは Restricted、Windows サーバーでは RemoteSigned となります。 Unrestricted - Windows 以外のコンピューターの既定の実行ポリシーであり、変更 できません。 - 署名のないスクリプトを実行できます。スクリプトの実行には責任が 伴います。 - インターネットからダウンロードしたスクリプトと構成ファイルを 実行する前に、警告が表示されます。 実行ポリシーのスコープ 実行ポリシーは、特定のセッションのみ、現在のユーザーのみ、または すべてのユーザーに対して設定できるスコープを持ちます。スコープは 優先順位の高い順に次のとおりです。 MachinePolicy グループポリシーによって設定され、コンピューターのすべての ユーザーに適用されます。 UserPolicy グループポリシーによって設定され、コンピューターの現在の ユーザーに適用されます。 Process 現在の PowerShell セッションにのみ影響します。実行ポリシーは $Env:PSExecutionPolicyPreference 環境変数に保存され、レジストリ には保存されません。セッションを閉じると、この変数と値は削除 されます。 CurrentUser 現在のユーザーにのみ影響します。レジストリの HKEY_CURRENT_USER キーに保存されます。 LocalMachine 現在のコンピューターのすべてのユーザーに影響します。レジストリの HKEY_LOCAL_MACHINE キーに保存されます。 優先順位の高いスコープに設定された実行ポリシーは、優先順位の低い スコープに設定された実行ポリシーよりも優先されます。 実行ポリシーの取得 有効な実行ポリシーを取得するには、Get-ExecutionPolicy コマンドレットを 使用します。 Get-ExecutionPolicy すべてのスコープの実行ポリシーを優先順位順に表示するには、次の コマンドを使用します。 Get-ExecutionPolicy -List 特定のスコープの実行ポリシーを取得するには、次のコマンドを使用します。 Get-ExecutionPolicy -Scope CurrentUser 実行ポリシーの設定 実行ポリシーを変更するには、Set-ExecutionPolicy コマンドレットを 使用します。変更はすぐに有効になります。設定を保存する必要は ありません。 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 特定のスコープの実行ポリシーを設定するには、次のコマンドを使用します。 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser LocalMachine スコープの実行ポリシーを設定するには、管理者として PowerShell を起動する必要があります。 実行ポリシーの削除 特定のスコープの実行ポリシーを削除するには、実行ポリシーを Undefined に設定します。 Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine 1 つのセッションの実行ポリシーを設定する pwsh.exe の起動時に -ExecutionPolicy パラメーターを使うと、1 つの 新しいセッションの実行ポリシーを設定できます。このポリシーは現在の セッションにのみ影響し、Process スコープに保存されます。 pwsh.exe -ExecutionPolicy AllSigned グループポリシーの優先順位 グループポリシーの設定は、PowerShell で設定したすべての実行ポリシー よりも優先されます。評価順序は次のとおりです。 1. グループポリシー: MachinePolicy 2. グループポリシー: UserPolicy 3. 実行ポリシー: Process (または pwsh.exe の -ExecutionPolicy パラメーター) 4. 実行ポリシー: LocalMachine 5. 実行ポリシー: CurrentUser 署名済み・未署名スクリプトの管理 Internet Explorer や Microsoft Edge、Outlook、Microsoft Edge などの プログラムでダウンロードしたファイルには、インターネット由来である ことを示すマーク (ゾーン情報) が付きます。RemoteSigned 実行ポリシー では、署名のないダウンロード済みスクリプトは実行できません。実行する には、次のいずれかの方法を使用します。 - スクリプトに署名する。 - Unblock-File コマンドレットを使ってブロックを解除し、実行を許可する。 ファイルがブロックされているかどうかは、次のコマンドで確認できます。 Get-Item .\Start-ActivityTracker.ps1 -Stream Zone.Identifier 注: curl.exe、Invoke-RestMethod、Invoke-WebRequest など一部の ダウンロード方法では、ファイルにインターネット由来のマークが付き ません。 Windows Server Core / Nano Server PowerShell は、Windows Server Core や Windows Nano Server などの システムで AuthorizationManager check failed エラーが発生して失敗する ことがあります。これらのシステムには、ゾーン情報の検証に必要な Windows デスクトップシェルがないためです。ゾーンチェックを回避する には、Bypass または AllSigned 実行ポリシーを使用してください。 関連項目 Get-ExecutionPolicy Set-ExecutionPolicy Unblock-File about_Signing about_Group_Policy_Settings ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |