about_Execution_Policies

トピック
    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-ExecutionPolicy の 
    Scope パラメーターを使用します。

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

        get-executionpolicy -scope CurrentUser   




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

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

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

    現在のプロセスに対して実行ポリシーを設定した場合は、変更はレジストリには保存されません。
    変更は現在のプロセスおよびすべての子プロセスが終了するまで保持されます。

    
    注: Windows Vista 以降のバージョンの Windows でローカル コンピューター (既定) の実行ポリ
        シーを変更するコマンドを実行するには、Windows PowerShell を起動する際に [管理者として実行] 
        を指定します。
    

    実行ポリシーを変更するには、次のように入力します。
 
        Set-ExecutionPolicy <policy-name>

    次にその例を示します。

        Set-ExecutionPolicy RemoteSigned



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

        Set-ExecutionPolicy <policy-name> -scope <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 や Windows 
    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 の管理用テンプレート)」(https://go.microsoft.com/fwlink/?LinkId=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 の管理用テンプレート)」
        (https://go.microsoft.com/fwlink/?LinkId=131786)