ja-JP/about_PSSessions.help.txt

TOPIC
    about_PSSessions

簡単な説明
    PowerShell セッション (PSSession) について説明し、リモートコンピューター
    への永続的な接続を確立する方法を説明します。

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

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

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

    Windows PowerShell 3.0 以降では、Windows 上の PSSession は、それが作成
    されたセッションから独立しています。アクティブな PSSession は、リモート
    コンピューター (接続のリモート端または "サーバー側" にあるコンピューター)
    上で維持されます。その結果、Windows ではリモート Windows コンピューター上の
    PSSession から切断し、後で同じコンピューターまたは別の Windows
    コンピューターから再接続できます。

    このトピックでは、PSSession の作成、使用、取得、削除の方法について説明
    します。より高度な情報については、about_PSSession_Details を参照して
    ください。

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

    Windows Vista 以降のバージョンの Windows では、ローカルコンピューターに
    PSSession を作成するには、"管理者として実行" オプションを使用して
    PowerShell を開始する必要があります。

  セッションとは

    セッションは、PowerShell が実行される環境です。

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

    "PowerShell セッション" または "PSSession" と呼ばれる、ユーザー管理の
    セッションを、ローカルコンピューターまたはリモートコンピューターに作成
    することもできます。既定のセッションと同様に、PSSession 内でコマンドを
    実行したり、項目を追加および作成したりできます。ただし、自動的に開始
    されるセッションとは異なり、作成した PSSession を制御できます。PSSession
    の取得、作成、構成、削除、切断と再接続、および同じ PSSession 内での複数
    コマンドの実行を行えます。PSSession は、削除するかタイムアウトするまで
    利用可能なまま残ります。

    通常、リモートコンピューターで一連の関連するコマンドを実行するために
    PSSession を作成します。リモートコンピューターに PSSession を作成すると、
    PowerShell はそのセッションをサポートするためにリモートコンピューターへの
    永続的な接続を確立します。

    Invoke-Command または Enter-PSSession コマンドレットの ComputerName
    パラメーターを使用してリモートコマンドを実行したり対話型セッションを
    開始したりすると、PowerShell はリモートコンピューターに一時的なセッションを
    作成し、コマンドが完了するか対話型セッションが終了するとすぐにセッションを
    閉じます。これらの一時的なセッションは制御できず、1 つのコマンドまたは
    1 つの対話型セッションにのみ使用できます。

    PowerShell では、"現在のセッション" は作業中のセッションです。"現在の
    セッション" は、一時的なセッションや PSSession を含む任意のセッションを
    指すことがあります。

  PSSession を使用する理由

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

    PSSession を作成せずにリモートコマンドを実行できます。リモート対応の
    コマンドレットの ComputerName パラメーターを使用して、1 台または複数の
    コンピューターで単一のコマンドまたは一連の無関係なコマンドを実行します。

    Invoke-Command または Enter-PSSession の ComputerName パラメーターを
    使用すると、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 は、各リモートコンピューターに 1 つの PSSession を作成
    します。

  PSSession を取得する方法

    現在のセッションで作成された PSSession を取得するには、ComputerName
    パラメーターなしで 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 コマンドレットを使用するとき、PSSession をその ID、名前、または
    インスタンス ID (GUID) で参照できます。次のコマンドは、ID で PSSession を
    取得して $ps01 変数に保存します。

        $ps01 = Get-PSSession -Id 1

    Windows PowerShell 3.0 以降では、PSSession はリモートコンピューター上で
    維持されます。特定のリモートコンピューターで作成した PSSession を取得する
    には、Get-PSSession コマンドレットの ComputerName パラメーターを使用
    します。次のコマンドは、Server01 リモートコンピューターで作成した
    PSSession を取得します。これには、現在のセッションで作成された PSSession
    と、ローカルコンピューターまたは他のコンピューター上の他のセッションで
    作成された PSSession が含まれます。

        Get-PSSession -ComputerName Server01

    Windows PowerShell 2.0 では、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 を削除するには、Remove-PSSession
    コマンドレットの ComputerName パラメーターを使用します。

        Remove-PSSession -ComputerName Server01 -Id 1

    PSSession を削除しない場合、PSSession はタイムアウトするまで利用可能な
    まま残ります。

    また、New-PSSessionOption コマンドレットの IdleTimeout パラメーターを
    使用して、アイドル状態の PSSession の有効期限を設定することもできます。
    詳細については、New-PSSessionOption を参照してください。

  PSSession コマンドレット

    PSSession コマンドレットの一覧を表示するには、次のように入力します。

        Get-Help *-PSSession

    - Connect-PSSession: PSSession を現在のセッションに接続します
    - Disconnect-PSSession: PSSession を現在のセッションから切断します
    - Enter-PSSession: 対話型セッションを開始します
    - Exit-PSSession: 対話型セッションを終了します
    - Get-PSSession: 現在のセッションの PSSession を取得します
    - New-PSSession: ローカルまたはリモートコンピューターに新しい PSSession を
      作成します
    - Receive-PSSession: 切断されたセッションで実行されたコマンドの結果を
      取得します
    - Remove-PSSession: 現在のセッションの PSSession を削除します

    注: 切断されたセッションは Windows でのみサポートされています。
    Connect-PSSession、Disconnect-PSSession、Receive-PSSession の各
    コマンドレットは Windows でのみ利用できます。切断されたセッションの詳細に
    ついては、about_Remote_Disconnected_Session を参照してください。

  詳細情報

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

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

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP