PowerShell HelpFile - about_execution_policies
 記事記号:[me1531] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Execution_Policies

簡易説明
    Windows PowerShell の実行ポリシーとその管理方法について説明します。

詳細説明
    Windows PowerShell 実行ポリシーは、Windows PowerShell が読み込む構成ファイル
    や PowerShell が実行するスクリプトに関する条件を決定します。

    実行ポリシーは、ローカル コンピューター、現在のユーザー、または特定のセッシ
    ョンに対して設定することができます。また、グループ ポリシー設定を使用して、
    複数のコンピューターやユーザーに対して実行ポリシーを設定することもできます。

    ローカル コンピューターおよび現在のユーザーに対する実行ポリシーは、レジスト
    リに保存されます。Windows PowerShell プロファイルで実行ポリシーを設定する必
    要はありません。特定のセッションに対する実行ポリシーはメモリにのみ保存され、
    セッションが終わると失われます。

    実行ポリシーは、ユーザー動作を制限するセキュリティ システムではありません。
    たとえば、ユーザーはスクリプトを実行できないとき、コマンド ラインでスクリプ
    トの内容を入力することによってポリシーを簡単に回避することができます。実行
    ポリシーの目的は、ユーザーが基本的なルールを設定し、誤ってそのルールに違反
    しないように支援することです。

 WINDOWS POWERSHELL 実行ポリシー
 -------------------------------

    Windows PowerShell の実行ポリシーを次に示します。

    既定のポリシーは "Restricted" です。

        Restricted
            - 既定の実行ポリシーです。

            - 個々のコマンドは許可されますが、スクリプトは実行されません。

            - 書式設定ファイルと構成ファイル (.ps1xml)、モジュール スクリプト フ
              ァイル (.psm1)、および Windows PowerShell プロファイル (.ps1) を含
              む、すべてのスクリプト ファイルの実行が禁止されます。
    
        AllSigned
            - スクリプトを実行できます。

            - すべてのスクリプトと構成ファイルが信頼された発行元によって署名され
              ていることが要求されます (ユーザーがローカル コンピューターで作成
              するスクリプトを含む)。

    	    - 信頼されているかどうかが分類されていない発行元からのスクリプトを実
              行する前に、プロンプトが表示されます。

            - インターネット以外のソースによる署名なしスクリプトや署名済みの悪意
              のあるスクリプトを実行する危険性があります。
      
        RemoteSigned
            - スクリプトを実行できます。

            - インターネットからダウンロードされたスクリプトおよび構成ファイル (
              電子メール プログラムとインスタント メッセージング プログラムを含
              む) に対して、信頼された発行元によるデジタル署名が必要です。

    	    - (インターネットからダウンロードしたのではなく) ローカル コンピュー
              ターで実行されたスクリプトおよび作成されたスクリプトにはデジタル署
              名は不要です。

            - 署名済みの悪意のあるスクリプトを実行する危険性があります。

        Unrestricted
            - 署名なしスクリプトを実行できます (悪意のあるスクリプトを実行する危
              険性があります)。

            - インターネットからダウンロードしたスクリプトおよび構成ファイルを実
              行する前にユーザーに警告します。

        Bypass
            - 何もブロックされず、警告またはプロンプトも表示されません。

            - この実行ポリシーは、Windows PowerShell スクリプトが大きいアプリケ
              ーションに組み込まれる構成や、独自のセキュリティ モデルを備えたプ
              ログラムの基礎として Windows PowerShell が使用される構成を対象に設
              計されています。

        Undefined
            - 現在のスコープで設定されている実行ポリシーはありません。

            - すべてのスコープの実行ポリシーが Undefined である場合、効力を持つ
              実行ポリシーは既定の実行ポリシーである Restricted となります。


    注: 汎用名前付け規則 (UNC) パスとインターネット パスとが区別されないシステム
        では、RemoteSigned 実行ポリシーで UNC パスによって識別されるスクリプトの
        実行が許可されない可能性があります。

 実行ポリシーのスコープ
 ----------------------
    特定のスコープでのみ有効な実行ポリシーを設定することができます。

    Scope の有効な値は、Process、CurrentUser、および LocalMachine です。実行ポリ
    シーを設定する際の既定値は LocalMachine です。

    次に、Scope の値を優先順位の高いものから順に示します。

        - Process
             実行ポリシーは、現在のセッション (現在の Windows PowerShell プロセス
             ) にのみ影響します。実行ポリシーは、$PSExecutionPolicyPreference 環
             境変数に保存されます。この値は、ポリシーが設定されているセッションが
             終了すると削除されます。

        - CurrentUser
             実行ポリシーは、現在のユーザーにのみ影響します。HKEY_CURRENT_USER 
             レジストリ サブキーに保存されます。

        - LocalMachine
             実行ポリシーは、現在のコンピューター上のすべてのユーザーに影響しま
             す。HKEY_LOCAL_MACHINE レジストリ サブキーに保存されます。

    より制限の厳しいポリシーの優先順位が低く設定されている場合でも、優先順位の高
    いポリシーが現在のセッションで有効になります。

    詳細については、「Set-ExecutionPolicy」を参照してください。

 実行ポリシーの取得
 ------------------
    現在のセッションで有効な Windows PowerShell 実行ポリシーを取得するには、Get-
    ExecutionPolicy コマンドレットを使用します。

    次のコマンドでは現在の実行ポリシーが取得されます。

	get-executionpolicy  


    現在のセッションで有効なすべての実行ポリシーを取得し、優先順位の高いものから
    順に表示するには、次のように入力します。

        get-executionpolicy -list

    結果は次のサンプル出力のようになります。

                  スコープ    実行ポリシー
                  --------    ------------
          MachinePolicy          Undefined
             UserPolicy          Undefined
                Process          Undefined
            CurrentUser       RemoteSigned
           LocalMachine          AllSigned
     
    この場合、現在のユーザーの実行ポリシーは、ローカル コンピューターに設定され
    た実行ポリシーより優先されるため、有効な実行ポリシーは、RemoteSigned になり
    ます。
    
    特定のスコープに対して設定された実行ポリシーを取得するには、Get-ExecutionPol
    icy の Scope パラメーターを使用します。

    たとえば、次のコマンドは現在のユーザーのスコープに対する実行ポリシーを取得し
    ます。

        get-executionpolicy -scope CurrentUser	 

 実行ポリシーの変更
 ------------------
    コンピューター上の Windows PowerShell 実行ポリシーを変更するには、Set-Execut
    ionPolicy コマンドレットを使用します。

    変更は直ちに反映されます。Windows PowerShell を再起動する必要はありません。

    実行ポリシーをローカル コンピューター (既定) または現在のユーザーに対して設
    定した場合、変更はレジストリに保存され、再度変更するまで反映された状態のまま
    です。

    現在のプロセスに対して実行ポリシーを設定した場合は、変更はレジストリには保存
    されません。変更は現在のプロセスおよびすべての子プロセスが終了するまで保持さ
    れます。
    
    注: Windows Vista 以降のバージョンの Windows でローカル コンピューター (既定
        ) の実行ポリシーを変更するコマンドを実行するには、Windows PowerShell を
        起動する際に [管理者として実行] を指定します。
    
    実行ポリシーを変更するには、次のように入力します。
 
        Set-ExecutionPolicy 

    次にその例を示します。

        Set-ExecutionPolicy RemoteSigned

    特定のスコープに実行ポリシーを設定するには、次のように入力します。

        Set-ExecutionPolicy  -scope 

    次にその例を示します。

        Set-ExecutionPolicy RemoteSigned -scope CurrentUser

    実行ポリシーを変更するコマンドは正常に実行されますが、有効な実行ポリシーは変
    更されません。

    たとえば、ローカル コンピューターの実行ポリシーを設定するコマンドは正常に実
    行されますが、現在のユーザーの実行ポリシーが優先されます。
    
 実行ポリシーの削除
 ------------------
    特定のスコープの実行ポリシーを削除するには、実行ポリシーの値を Undefined に設
    定します。

    たとえば、ローカル コンピューター上のすべてのユーザーの実行ポリシーを削除する
    には、次のように入力します。

        set-executionpolicy Undefined

    または、次のように入力します。

        set-executionpolicy Undefined -scope LocalMachine

    スコープに実行ポリシーが設定されていない場合、効力を持つ実行ポリシーは既定の
    実行ポリシーである Restricted となります。

 POWERSHELL.EXE における実行ポリシーの設定
 -----------------------------------------
    PowerShell.exe の ExecutionPolicy パラメーターを使用して、新しい Windows 
    PowerShell セッションの実行ポリシーを設定することができます。
    実行ポリシーは、現在のセッションと子セッションにのみ影響します。

    新しいセッションの実行ポリシーを設定するには、コマンド ライン (Cmd.exe や Wi
    ndows PowerShell など) で Windows PowerShell を起動し、PowerShell.exe の 
    ExecutionPolicy パラメーターを使用して実行ポリシーを設定します。

    次にその例を示します。

	powershell.exe -executionpolicy -allsigned
    
    設定した実行ポリシーは、レジストリには保存されません。その代わり、実行ポリシ
    ーは、$PSExecutionPolicyPreference 環境変数に保存されます。この変数は、ポリ
    シーが設定されるセッションが終了すると削除されます。
     
    セッション中は、セッションに対して設定されている実行ポリシーが、レジストリで
    ローカル コンピューターまたは現在のユーザーに対して設定されている実行ポリシ
    ーより優先されます。ただし、グループ ポリシー設定 (以下で説明) を使用して設
    定された実行ポリシーよりも優先順位は高くなりません。
    
 グループ ポリシーを使用した実行ポリシーの管理
 ---------------------------------------------
    "スクリプトの実行を有効にする" グループ ポリシー設定を使用して、エンタープラ
    イズ内のコンピューターの実行ポリシーを管理することができます。グループ ポリ
    シー設定は、Windows PowerShell のすべてのスコープで設定されている実行ポリシ
    ーよりも優先されます。

    "スクリプトの実行を有効にする" ポリシー設定を次に示します。
    
    -- "スクリプトの実行を有効にする" を無効にした場合、スクリプトは実行されませ
       ん。これは、"Restricted" 実行ポリシーと同等です。

    -- "スクリプトの実行を有効にする" を有効にした場合、実行ポリシーを選択できま
       す。グループ ポリシーの設定は、次の実行ポリシーの設定と同等です。

        グループ ポリシー           実行ポリシー
        --------------------        ---------------
        すべてのスクリプトを        Unrestricted
        許可する。

        ローカル スクリプトお       RemoteSigned
        よびリモートの署名済
        みスクリプトを許可する。
        
        署名済みスクリプトを        AllSigned
        許可する。

    -- "スクリプトの実行を有効にする" が設定されていない場合、このポリシーは効果
       がありません。Windows PowerShell で設定した実行ポリシーが有効になります。


    PowerShellExecutionPolicy.adm ファイルで、"スクリプトの実行を有効にする" ポリ
    シーが、次に示すパスにあるグループ ポリシー エディターのコンピューターの構成
    ノードおよびユーザーの構成ノードに追加されます。

        Windows XP および Windows Server 2003:
        Administrative Templates\Windows Components\Windows PowerShell

        Windows Vista 以降のバージョンの Windows:
        Administrative Templates\Classic Administrative Templates\ Windows 
        Components\Windows PowerShell

    コンピューターの構成ノードで設定されたポリシーは、ユーザーの構成ノードで設定
    されたポリシーよりも優先されます。

    PowerShellExecutionPolicy.adm ファイルは、Microsoft ダウンロード センターで入
    手できます。詳細については、「Administrative Templates for Windows PowerShell 
    (Windows PowerShell の管理用テンプレート)」(http://go.microsoft.com/fwlink/?L
    inkId=131786) を参照してください。
    
 実行ポリシーの優先順位
 ----------------------
    セッションに対する有効な実行ポリシーを決定する際に、Windows PowerShell では
    次の優先順位で実行ポリシーが評価されます。

        - グループ ポリシー: コンピューターの構成
        - グループ ポリシー: ユーザーの構成
        - 実行ポリシー: Process (または PowerShell.exe -ExecutionPolicy)
        - 実行ポリシー: CurrentUser
        - 実行ポリシー: LocalMachine

 署名済みおよび署名なしスクリプトの管理
 --------------------------------------
    Windows PowerShell 実行ポリシーが RemoteSigned である場合、Windows PowerShell 
    では、インターネットからダウンロードされた署名なしスクリプト (電子メール プロ
    グラムとインスタント メッセージング プログラムを含む) は実行されません。
 
    スクリプトを署名するか、または実行ポリシーを変更せずに署名なしスクリプトを実
    行するように選択することができます。

    詳細については、「about_Signing」を参照してください。


関連項目
    Get-ExecutionPolicy
    Set-ExecutionPolicy
    about_Signing
    「Administrative Templates for Windows PowerShell 
    (Windows PowerShell の管理用テンプレート)」
    (http://go.microsoft.com/fwlink/?LinkId=131786)
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_execution_policies
ご利用数: 1858213
感想・要望・問い合わせは こちら