次の方法で共有


about_PSSessions

トピック
    about_PSSessions

簡易説明
    Windows PowerShell セッション (PSSession) について説明し、リモート コンピューターへ
    の固定接続を確立する方法を紹介します。


詳細説明
    リモート コンピューター上で Windows PowerShell コマンドを実行するには、コマンドレットの 
    ComputerName パラメーターを使用するか、Windows PowerShell セッション (PSSession) 
    を作成してその PSSession でコマンドを実行します。

    PSSession を作成すると、Windows PowerShell はリモート コンピューターへの固定接続を確立しま
    す。リモート コンピューターで一連の関連コマンドを実行するには、PSSession を使用します。同じ 
    PSSession で実行されるコマンド間では、変数の値、エイリアス、関数などのデータを共有できます。

    ローカル コンピューターで PSSession を作成し、その PSSession でコマンドを実行することも
    できます。ローカル PSSession は、Windows PowerShell リモート処理インフラストラクチャを使用して 
    PSSession を作成および維持します。

    ここでは、PSSession を作成、使用、取得、および削除する方法について説明します。高度な情報
    については、「about_PSSession_Details」を参照してください。

    注: PSSession は、Windows PowerShell リモート処理インフラストラクチャを使用します。
        PSSession を使用するには、ローカル コンピューターとリモート コンピューターがリモート
        処理用に構成されている必要があります。詳細については、「about_Remote_Requirements」
        を参照してください。

        Windows Vista 以降のバージョンの Windows で、ローカル コンピューター上に PSSession 
        を作成するには、Windows PowerShell を起動する際に [管理者として実行] を指定する必要
        があります。
    

 セッションとは

    セッションとは、Windows PowerShell が実行される環境のことです。
    
    Windows PowerShell を起動するたびに、セッションが自動的に作成されます。ユーザーは、そのセッ
    ションでコマンドを実行できます。モジュールやスナップインなどの項目をセッションに追加すること
    も、変数、関数、エイリアスなどの項目を作成することもできます。これらの項目はセッションにのみ
    存在し、セッションが終了すると削除されます。

    "Windows PowerShell セッション" または "PSSession" と呼ばれる追加のセッションを、ローカル 
    コンピューターまたはリモート コンピューター上に作成することもできます。既定のセッションと
    同様に、PSSession でもコマンドを実行し、項目の追加と作成を行うことができます。

    ただし、自動的に開始されるセッションとは異なり、作成した PSSession はユーザー自身で制御で
    きます。PSSession は取得、作成、構成、および削除が可能です。また、複数のコマンドを同じ 
    PSSession で実行できます。PSSession は、セッションから削除するまで、開かれたまま使用可能
    な状態で残ります。
      
    リモート コンピューターで一連の関連コマンドを実行するには、通常は PSSession を作成しま
    す。リモート コンピューター上に PSSession を作成すると、Windows PowerShell はリモート 
    コンピューターに対する固定接続を確立し、セッションをサポートします。

    Invoke-Command コマンドレットまたは Enter-PSSession コマンドレットの computerName パラ
    メーターを使用してリモート コマンドを実行するか、対話型のセッションを開始した場合、Windows 
    PowerShell はリモート コンピューター上に一時セッションを作成し、コマンドが完了するか対話
    型のセッションが終了すると、そのセッションを閉じます。このような一時セッションをユーザー
    が制御することはできません。また、このような一時セッションは、複数のコマンドや複数の対話
    セッションには使用できません。

    Windows PowerShell における "現在のセッション" は、使用中のセッションのことです。"現在
    のセッション" という言葉は、一時セッションや PSSession を含め、あらゆる種類のセッションに
    ついて使用されることがあります。


 PSSession を使用する理由

    PSSession は、リモート コンピューターへの固定接続が必要な場合に使用します。PSSession で
    は、変数の値、関数の内容、エイリアスの定義などのデータを共有する、一連のコマンドを実行できます。

    PSSession を作成せずにリモート コマンドを実行することもできます。リモート処理に対応したコ
    マンドレットの ComputerName パラメーターを使用すると、1 台または多数のコンピューター上で、
    単一のコマンドまたは一連の関連のないコマンドを実行できます。

    Invoke-Expression または Enter-PSSession の ComputerName パラメーターを使用した場合、
    Windows PowerShell はリモート コンピューターへの一時接続を確立し、コマンドが完了するとその
    接続を閉じます。接続が閉じられると、作成したすべてのデータ要素は削除されます。

    Get-Eventlog や Get-WmiObject など、ComputerName パラメーターを持つその他のコマンドレットは、
    さまざまなリモート処理テクノロジを使用してデータを収集します。いずれも、PSSession のような
    固定接続は作成しません。
     

 PSSession の作成方法

    PSSession を作成するには、New-PSSession コマンドレットを使用します。リモート コンピュータ
    ー上に PSSession を作成するには、New-PSSession コマンドレットの ComputerName パラメータ
    ーを使用します。

    たとえば、次のコマンドを実行すると、Server01 コンピューター上に新しい PSSession が作成され
    ます。

        new-pssession -computername Server01

    コマンドを送信すると、New-PSSession によって PSSession が作成され、PSSession を表すオブジェ
    クトが返されます。PSSession の作成時にオブジェクトを変数に保存することも、Get-PSSession コ
    マンドを使用して後で PSSession を取得することもできます。

    たとえば、次のコマンドを実行すると、Server01 コンピューター上に新しい PSSession が作成
    され、作成されたオブジェクトが $ps 変数に保存されます。
    
        $ps = new-pssession -computername Server01


 複数のコンピューター上に PSSession を作成する方法

    複数のコンピューター上に PSSession を作成するには、New-PSSession コマンドレットの 
    ComputerName パラメーターを使用します。一連のリモート コンピューターの名前をコンマ区切り
    で入力します。

    たとえば、Server01、Server02、Server03 の各コンピューター上に PSSession を作成するには、次のよ
    うに入力します。

        new-PSSession -computername Server01, Server02, Server03

    New-PSSession により、各リモート コンピューター上に PSSession が 1 つ作成されます。


 PSSession を取得する方法
 
    現在のセッションで作成された PSSession を取得するには、Get-PSSession コマンドレットを使
    用します。Get-PSSession は、New-PSSession が返すオブジェクトと同じ種類のオブジェクトを
    返します。

    次のコマンドを実行すると、現在のセッションで作成されたすべての PSSession を取得できます。

        get-PSSession

    既定では、PSSession の ID と既定の表示名が表示されます。セッションの作成時には、別の
    表示名を付けることができます。

        Id   Name       ComputerName    State    ConfigurationName
        ---  ----       ------------    -----    ---------------------
        1    Session1   Server01        Opened   Microsoft.PowerShell
        2    Session2   Server02        Opened   Microsoft.PowerShell
        3    Session3   Server03        Opened   Microsoft.PowerShell

   
    PSSession を変数に保存することもできます。次のコマンドを実行すると、PSSession を取得し、
    $ps123 変数に保存できます。

        $ps123 = get-PSSession

    PSSession コマンドレットを使用する際には、ID、名前、またはインスタンス ID (GUID) を使
    用して PSSession を参照できます。次のコマンドを実行すると、ID を使用して PSSession を取
    得し、$ps01 変数に保存できます。

        $ps01 = get-PSSession -id 1

    Get-PSSession で取得されるのは、現在のセッションで作成された PSSession だけです。他の
    セッションまたは他のコンピューターで作成された PSSession は、そのセッションがローカル 
    コンピューターに接続され、ローカル コンピューター上でコマンドが実行されている場合でも
    取得されません。



 PSSession でコマンドを実行する方法

    1 つまたは複数の PSSession でコマンドを実行するには、Invoke-Command コマンドレットを使用し
    ます。Session パラメーターを使用して PSSession を指定し、ScriptBlock パラメーターを使
    用してコマンドを指定します。

    たとえば、$ps123 変数に保存されている 3 つの PSSession それぞれで Get-ChildItem ("dir") 
    コマンドを実行するには、次のように入力します。

        invoke-command -session $ps123 -scriptblock {get-childitem}


 PSSession を削除する方法

    PSSession を終了する際には、Remove-PSSession コマンドレットを使用して PSSession を削除し、
    使用されていたリソースを解放します。

        remove-PSSession -session $ps

        - または -
          
        remove-PSSession -id 1
 
    PSSession を削除しない場合、その PSSession は、現在のセッションを閉じるか Windows 
    PowerShell を終了するまで、開かれたまま使用可能な状態で残ります。

    New-PSSession の TimeOut パラメーターを使用して、アイドル状態の PSSession の有効期限を設定
    することもできます。詳細については、「new-PSSession」を参照してください。


 PSSession コマンドレット

    コマンドレット        説明
    -----------------     ------------------------------------------------------
    New-PSSession         ローカル コンピューターまたはリモート コンピューター上
                          に新しい PSSession を作成します。

    Get-PSSession         現在のセッションの PSSession を取得します。

    Remove-PSSession      現在のセッションの PSSession を削除します。

    Enter-PSSession       対話型のセッションを開始します。

    Exit-PSSession        対話型のセッションを終了します。

    

    PSSession コマンドレットの一覧を参照するには、次のコマンドを入力してください。
    
    get-help *-PSSession


 詳細情報

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

関連項目
    about_Remote
    about_Remote_Requirements
    New-PSSession
    Get-PSSession
    Remove-PSSession
    Enter-PSSession
    Exit-PSSession
    Invoke-Command