about_Remote_Disconnected_Sessions

適用対象: Windows PowerShell 3.0, Windows PowerShell 4.0

トピック

about_Remote_Disconnected_Session

概要

PSSession から切断し、再接続する方法について説明します。

詳細説明

Windows PowerShell® 3.0 以降では、PSSession から切断し、後から同じコンピューターまたは別のコンピューター上で PSSession に再接続することができます。セッションが切断されている間も、セッションの状態は保持され、PSSession 内のコマンドは引き続き実行されます。

"切断されたセッション" 機能は、接続のリモート側にあるコンピューターで Windows PowerShell 3.0 以降のバージョンの Windows PowerShell が実行されている場合にのみ使用できます。

"切断されたセッション" 機能を使用すると、PSSession で実行されているコマンドを中断することなく、Windows PowerShell も含めて PSSession が作成されたセッションを閉じ、コンピューターをシャットダウンすることができます。この機能は、完了までに長時間かかるコマンドを実行する際に特に便利で、IT プロフェッショナルから求められる時間とデバイスの柔軟性を提供します。

注記:Enter-PSSession コマンドレットを使用して開始された対話型セッションから切断することはできません。

"切断されたセッション" 機能を使用すると、コンピューターまたはネットワークの停止の結果として意図せず切断された PSSession を管理できます。

実際には、"切断されたセッション" 機能を使用すると、問題の解決を開始し、より優先度の高い問題に注意を向けた後、場合によっては別の場所にある別のコンピューター上で再び解決策に取り組むことができます。

"切断されたセッション" 用コマンドレット

次のコマンドレットは、"切断されたセッション" 機能をサポートしています。

  • Disconnect-PSSession:

    PSSession を切断します。

  • Connect-PSSession:

    切断された PSSession に接続します。

  • Receive-PSSession:

    切断されたセッションで実行されたコマンドの結果を取得します。

  • Get-PSSession:

    ローカル コンピューターまたはリモート コンピューター上で PSSession を取得します。

  • Invoke-Command:

    InDisconnectedSession パラメーターによって PSSession が作成され、すぐに切断されます。

"切断されたセッション" 機能のしくみ

Windows PowerShell 3.0 以降では、PSSession は作成元のセッションから独立しています。アクティブな PSSession は、PSSession が作成されたセッションが閉じられ、元のコンピューターがシャットダウンされるかネットワークから切断された場合でも、リモート コンピューターまたは接続の "サーバー側" で保持されます。

Windows PowerShell 2.0 では、PSSession がリモート コンピューターから削除されるのは、元のセッションから切断された時点または PSSession が作成されたセッションが終了した時点です。

PSSession を切断すると、PSSession はアクティブな状態のまま、リモート コンピューター上で保持されます。セッションの状態は、Running から Disconnected に変化します。切断された PSSession には、現在のセッションから、同じコンピューター上の別のセッションから、または別のコンピューターから再接続できます。セッションを保持するリモート コンピューターは、実行中でネットワークに接続されている必要があります。

切断された PSSession のコマンドは、コマンドが完了するか出力バッファーがいっぱいになるまで、中断されることなくリモート コンピューター上で実行され続けます。出力バッファーがいっぱいになった結果としてコマンドが中断されないようにするには、Disconnect-PSSession、New-PSSessionOption、または New-PSTransportOption の各コマンドレットの OutputBufferingMode パラメーターを使用します。

切断されたセッションは、リモート コンピューター上で切断状態のまま保持されます。切断されたセッションは、PSSession を削除する (たとえば、Remove-PSSession コマンドレットを使用する) か、PSSession のアイドル状態のタイムアウトが切れるまで、再接続することができます。PSSession のアイドル状態のタイムアウトを調整するには、Disconnect-PSSession、New-PSSessionOption、または New-PSTransportOption の各コマンドレットの IdleTimeoutSec パラメーターまたは IdleTimeout パラメーターを使用します。

作成した PSSession に別のユーザーが接続することも可能ですが、これは、セッションの作成に使用された資格情報を指定できるか、セッション構成の RunAs 資格情報を使用できる場合に限ります。

PSSession を取得する方法

Windows PowerShell 3.0 以降の Get-PSSession コマンドレットでは、ローカル コンピューターとリモート コンピューター上の PSSession が取得されます。現在のセッションで作成された PSSession を取得することもできます。

ローカル コンピューターまたはリモート コンピューター上の PSSession を取得するには、ComputerName パラメーターまたは ConnectionUri パラメーターを使用します。パラメーターを指定しない場合、Get-PSSession は、どこで終了するかに関係なく、ローカル セッションで作成された PSSession を取得します。

PSSession を取得する場合は、PSSession が保持されているコンピューター、つまり、リモート コンピューターまたは "サーバー側" コンピューター上で探すようにしてください。

たとえば、Server01 コンピューターに対する PSSession を作成した場合は、Server01 コンピューターからセッションを取得します。別のコンピューターからローカル コンピューターへの PSSession を作成した場合は、ローカル コンピューターからセッションを取得します。

次のコマンド シーケンスでは、Get-PSSession の動作を示します。

最初のコマンドは、Server01 コンピューターに対する PSSession を作成します。セッションは、Server01 コンピューターに存在します。

      PS C:\ps-test> New-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

セッションを取得するには、値 Server01 を指定した、Get-PSSession の ComputerName パラメーターを使用します。

      PS C:\ps-test> Get-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

Get-PSSession の ComputerName パラメーターの値が localhost の場合、Get-PSSession は、ローカル コンピューター上で終了して保持されている PSSession を取得します。PSSession がローカル コンピューター上で開始された場合でも、Server01 コンピューター上の PSSession は取得されません。

      PS C:\ps-test> Get-PSSession -ComputerName localhost
      PS C:\ps-test>

現在のセッション内で作成されたセッションを取得するには、パラメーターを指定せずに Get-PSSession コマンドレットを使用します。このコマンドでは、現在のセッション内で作成されて Server01 コンピューターに接続された PSSession を取得します。

PS C:\ps-test> Get-PSSession

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

セッションを切断する方法

PSSession を切断するには、Disconnect-PSSession コマンドレットを使用します。PSSession を識別するには、Session パラメーターを使用するか、パイプを使用して New-PSSession または Get-PSSession コマンドレットから Disconnect-PSSession に PSSession を渡します。

次のコマンドは、Server01 コンピューターに対する PSSession を切断します。State プロパティの値が Disconnected、Availability プロパティの値が None であることに注目してください。

     PS C:\> Get-PSSession -ComputerName Server01 | Disconnect-PSSession

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        Server01        Disconnected  Microsoft.PowerShell          None

切断されたセッションを作成するには、Invoke-Command コマンドレットの InDisconnectedSession パラメーターを使用します。これにより、セッションが作成され、コマンドが開始開始されて、すぐに切断された後、コマンドによって出力が返されます。

次のコマンドは、Server02 リモート コンピューター上の切断されたセッションで Get-WinEvent コマンドを実行します。

     PS C:\> Invoke-Command -ComputerName Server02 -InDisconnectedSession `
             -ScriptBlock {Get-WinEvent -LogName "Windows PowerShell"} 

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      4 Session3        Server02        Disconnected  Microsoft.PowerShell          None

切断されたセッションに接続する方法

使用可能な切断された PSSession には、その PSSession を作成したセッション、またはローカル コンピューターやその他のコンピューター上の他のセッションから接続できます。

PSSession の作成、PSSession でのコマンドの実行、PSSession からの切断、Windows PowerShell を閉じる操作、コンピューターのシャットダウンを実行できます。数時間後に別のコンピューターを開き、PSSession を取得して接続すると、PSSession が切断されている間に実行されたコマンドの結果を取得できます。その後、セッションでさらにコマンドを実行できます。

切断された PSSession を接続するには、Connect-PSSession コマンドレットを使用します。ComputerName または ConnectionUri パラメーターを使用して PSSession を識別するか、パイプを使用して Get-PSSession から Connect-PSSession に PSSession を渡します。

次のコマンドは、Server02 コンピューター上のセッションを取得します。出力には、切断されたセッションが 2 つ含まれており、両方とも使用可能です。

     PS C:\> Get-PSSession -ComputerName Server02

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Disconnected  Microsoft.PowerShell          None
      4 Session3        juneb-srv8320   Disconnected  Microsoft.PowerShell          None

次のコマンドは、Session2 に接続します。PSSession が開かれ、使用可能になります。

     PS C:> Connect-PSSession -ComputerName Server02 -Name Session2


     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Opened        Microsoft.PowerShell     Available

結果を取得する方法

切断された PSSession で実行されたコマンドの結果を取得するには、Receive-PSSession コマンドレットを使用します。

Receive-PSSession は、Connect-PSSession コマンドレットに加えて使用することも、Connect-PSSession コマンドレットの代わりに使用することもできます。既に再接続されているセッションに Receive-PSSession を実行した場合、そのセッションが切断されていたときに実行されたコマンドの結果が取得されます。PSSession が切断された状態のままの場合は、Receive-PSSession を実行すると、PSSession に接続し、そのセッションの切断中に実行されたコマンドの結果が取得されます。

Receive-PSSession は、結果をジョブで (非同期に) 返すことも、ホスト プログラムに (同期的に) 返すこともできます。OutTarget パラメーターを使用して、Job または Host を選択します。既定値は Host です。ただし、受信しているコマンドが現在のセッションでジョブとして開始された場合、既定では、結果がジョブとして返されます。

次のコマンドは、Receive-PSSession コマンドレットを使用して、Server02 コンピューター上の PSSession に接続し、Session3 セッションで実行された Get-WinEvent コマンドの結果を取得します。このコマンドは、OutTarget パラメーターを使用してジョブの結果を取得します。

      PS C:\> Receive-PSSession  -ComputerName Server02 -Name Session3 -OutTarget Job

      Id     Name            PSJobTypeName   State         HasMoreData     Location
      --     ----            -------------   -----         -----------     --------
      3      Job3            RemoteJob       Running       True            Server02

ジョブの結果を取得するには、Receive-Job コマンドレットを使用します。

      PS C:\ps-test> Get-Job | Receive-Job -Keep


          ProviderName: PowerShell

     TimeCreated             Id LevelDisplayName Message     PSComputerName                                                       
     -----------             -- ---------------- -------     --------------                                                       
     5/14/2012 7:26:04 PM   400 Information      Engine stat Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "W Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "C Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "V Server02                                                        

状態と可用性

切断された PSSession の State プロパティと Availability プロパティは、セッションに再接続できるかどうかを示します。

PSSession が現在のセッションに接続されている場合、その状態は Opened、可用性は Available となります。PSSession から切断すると、PSSession の状態は Disconnected、可用性は None となります。

ただし、State プロパティの値は現在のセッションを基準としています。そのため、Disconnected という値は、PSSession が現在のセッションに接続されていないことを意味します。ただし、PSSession がすべてのセッションから切断されていることを意味するわけではありません。別のセッションに接続されている可能性があるためです。

PSSession に接続または再接続できるかどうかを確認するには、Availability プロパティを使用します。Availability の値が None の場合は、セッションに接続できることを示します。Busy の場合は、PSSession が別のセッションに接続されているため、接続できないことを示します。

次の例は、同じコンピューター上の 2 つのセッション (Windows PowerShell コンソール ウィンドウ) での実行結果です。PSSession を切断および再接続すると各セッションの State プロパティと Availability プロパティの値が変化することに注意してください。

         #Session 1:
         PS C:\> New-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1  Test       Server30        Opened        Microsoft.PowerShell     Available

         #Session 2: 
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1 Test        Server30        Disconnected  Microsoft.PowerShell          Busy



         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None

         #Session 2
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None



         #Session 2
         PS C:\> Connect-PSSession -ComputerName Server01 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         3 Test        Server30        Opened        Microsoft.PowerShell     Available

         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          Busy

アイドル タイムアウト

切断されたセッションは、Remove-PSSession コマンドレットを使用するなどして削除するか、タイムアウトするまで、リモート コンピューター上に保持されます。PSSession の IdleTimeout プロパティにより、切断されたセッションが削除されるまで保持される時間が決まります。

PSSession は、"ハートビート スレッド" が応答を受信しなくなるとアイドル状態になります。セッションを切断すると、切断されたセッションでコマンドがまだ実行中であっても、セッションはアイドル状態になり、アイドル タイムアウト クロックが開始されます。Windows PowerShell では、切断されたセッションがアクティブと見なされますが、アイドル状態です。

セッションを作成して切断する場合は、PSSession のアイドル タイムアウトが必要に応じてセッションを保持するのに十分でありながら、リモート コンピューター上のリソースを不必要に消費しない長さであることを確認してください。

セッション構成の IdleTimeoutMs プロパティは、セッション構成を使用するセッションの既定のアイドル タイムアウトを決定します。既定値は上書きできますが、使用する値は、セッション構成の MaxIdleTimeoutMs プロパティを超えることはできません。

セッション構成の IdleTimeoutMs と MaxIdleTimeoutMs の値を調べるには、次のコマンド形式を使用します。

      Get-PSSessionConfiguration | Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

PSSession の作成時および切断時にセッション構成の既定値を上書きして、PSSession のアイドル タイムアウトを設定できます。

リモート コンピューター上の Administrators グループのメンバーの場合は、セッション構成の IdleTimeoutMs プロパティと MaxIdleTimeoutMs プロパティを作成および変更することもできます。

注意事項:

セッション構成およびセッション オプションのアイドル タイムアウト値は、ミリ秒単位です。セッションおよびセッション構成オプションのアイドル タイムアウト値は、ミリ秒単位です。

PSSession のアイドル タイムアウトは、PSSession を作成する場合 (New-PSSession、Invoke-Command) および PSSession を切断する場合 (Disconnect-PSSession) に設定できます。ただし、PSSession に接続する場合 (Connect-PSSession) や結果を取得する場合 (Receive-PSSession) は、IdleTimeout 値を変更できません。

Connect-PSSession コマンドレットと Receive-PSSession コマンドレットの SessionOption パラメーターでは、New-PSSessionOption コマンドレットで返されるような SessionOption オブジェクトを受け取ります。ただし、SessionOption オブジェクトの IdleTimeout 値と $PSSessionOption ユーザー設定変数の IdleTimeout 値は、Connect-PSSession コマンドまたは Receive-PSSession コマンドの PSSession の IdleTimeout 値を変更しません。

-- 特定のアイドル タイムアウト値を指定して PSSession を作成するには、$PSSessionOption ユーザー設定変数を作成します。IdleTimeout プロパティの値を目的の値に設定します (ミリ秒単位)。

PSSession を作成する際に、$PSSessionOption 変数の値はセッション構成の値よりも優先されます。

たとえば、このコマンドは、48 時間のアイドル タイムアウトを設定します。ここにセクション本体を挿入します。

PS C:\> $PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

-- 特定のアイドル タイムアウト値を指定して PSSession を作成するには、New-PSSessionOption コマンドレットの IdleTimeoutMSec パラメーターを使用します。次に、New-PSSession コマンドレットまたは Invoke-Command コマンドレットの SessionOption パラメーターの値でセッション オプションを使用します。

セッションの作成時に設定した値は、$PSSessionOption ユーザー設定変数やセッション構成で設定した値よりも優先されます。

たとえば、次のように入力します。

         PS C:\> $o = New-PSSessionOption -IdleTimeoutMSec 172800000 
         PS C:\> New-PSSession -SessionOption $o

-- 切断するときに PSSession のアイドル タイムアウトを変更するには、Disconnect-PSSession コマンドレットの IdleTimeoutSec パラメーターを使用します。

たとえば、次のように入力します。

         PS C:\> Disconnect-PSSession -IdleTimeoutSec 172800

-- 特定のアイドル タイムアウトと最大アイドル タイムアウトを指定してセッション構成を作成するには、New-PSTransportOption コマンドレットの IdleTimeoutSec パラメーターと MaxIdleTimeoutSec パラメーターを使用します。次に、Register-PSSessionConfiguration の TransportOption パラメーターの値でトランスポート オプションを使用します。

たとえば、次のように入力します。

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200 
         PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

-- セッション構成の既定のアイドル タイムアウトと最大アイドル タイムアウトを変更するには、New-PSTransportOption コマンドレットの IdleTimeoutSec パラメーターと MaxIdleTimeoutSec パラメーターを使用します。次に、Set-PSSessionConfiguration の TransportOption パラメーターの値でトランスポート オプションを使用します。

たとえば、次のように入力します。

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

出力バッファー モード

PSSession の出力バッファー モードでは、PSSession の出力バッファーがいっぱいになった場合のコマンド出力を管理する方法を決定します。

切断されたセッションでは、出力バッファー モードによって、セッションが切断されている間にコマンドを引き続き実行するかどうかが実質的に決定されます。

有効な値:

    -- Block: When the output buffer is full, execution is suspended
              until the buffer is clear.

    -- Drop:  When the output buffer is full, execution continues. 
              As new output is generated, the oldest output is
              discarded.

Block (既定値) の場合、データは保持されますが、コマンドが中断される可能性があります。

値が Drop の場合は、データが失われる可能性はありますが、コマンドを完了できます。値 Drop を使用すると、コマンド出力がディスク上のファイルにリダイレクトされます。切断されたセッションには、この値を使用することをお勧めします。

セッション構成の OutputBufferingMode プロパティにより、セッション構成を使用するセッションの既定の出力バッファー モードが決定されます。

セッション構成の OutputBufferingMode の値を調べるには、次のコマンド形式を使用します。

      (Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode

    -or-

      Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

PSSession の作成時、切断時、再接続時に、セッション構成の既定値を上書きし、PSSession の出力バッファー モードを設定できます。

リモート コンピューター上の Administrators グループのメンバーの場合は、セッション構成の出力バッファー モードを作成および変更することもできます。

-- 出力バッファー モードを Drop に指定して PSSession を作成するには、OutputBufferingMode プロパティの値が Drop に設定された $PSSessionOption ユーザー設定変数を作成します。

PSSession を作成する際に、$PSSessionOption 変数の値はセッション構成の値よりも優先されます。

たとえば、次のように入力します。

         PS C:\> $PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

-- 出力バッファー モードを Drop に指定して PSSession を作成するには、New-PSSessionOption コマンドレットの OutputBufferingMode パラメーターを使用し、値に Drop を指定してセッション オプションを作成します。次に、New-PSSession コマンドレットまたは Invoke-Command コマンドレットの SessionOption パラメーターの値でセッション オプションを使用します。

セッションの作成時に設定した値は、$PSSessionOption ユーザー設定変数やセッション構成で設定した値よりも優先されます。

たとえば、次のように入力します。

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> New-PSSession -SessionOption $o

-- 切断時に PSSession の出力バッファー モードを変更するには、Disconnect-PSSession コマンドレットの OutputBufferingMode パラメーターを使用します。

たとえば、次のように入力します。

         PS C:\> Disconnect-PSSession -OutputBufferingMode Drop

-- 再接続時に PSSession の出力バッファー モードを変更するには、New-PSSessionOption コマンドレットの OutputBufferingMode パラメーターを使用し、値に Drop を指定してセッション オプションを作成します。次に、Connect-PSSession または Receive-PSSession の SessionOption パラメーターの値でセッション オプションを使用します。

たとえば、次のように入力します。

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> Connect-PSSession -Cn Server01 -Name Test -SessionOption $o

-- 既定の出力バッファー モードを Drop に指定してセッション構成を作成するには、New-PSTransportOption コマンドレットの OutputBufferingMode パラメーターを使用し、値に Drop を指定してトランスポート オプション オブジェクトを作成します。次に、Register-PSSessionConfiguration の TransportOption パラメーターの値でトランスポート オプションを使用します。

たとえば、次のように入力します。

PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

-- セッション構成の既定の出力バッファー モードを変更するには、New-PSTransportOption コマンドレットの OutputBufferingMode パラメーターを使用し、値に Drop を指定してトランスポート オプションを作成します。次に、Set-PSSessionConfiguration の SessionOption パラメーターの値でトランスポート オプションを使用します。

たとえば、次のように入力します。

         PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

ループバック セッションの切断

"ループバック セッション" または "ローカル セッション" は、同じコンピューターで開始および終了される PSSession です。他の PSSession と同様に、アクティブなループバック セッションは接続のリモート側のコンピューター (ローカル コンピューター) で保持されるため、ループバック セッションの切断および再接続を行うことができます。

既定では、ループバック セッションは、セッション内でのコマンド実行による他のコンピューターへのアクセスを許可しないネットワーク セキュリティ トークンを使用して作成されます。ネットワーク セキュリティ トークンを持つループバック セッションには、ローカル コンピューターまたはリモート コンピューター上の任意のセッションから再接続できます。

ただし、New-PSSession、Enter-PSSession、Invoke-Command コマンドレットの EnableNetworkAccess パラメーターを使用した場合、ループバック セッションは対話型セキュリティ トークンを使用して作成されます。対話型トークンを使用すると、ループバック セッションで実行されるコマンドによって他のコンピューターからデータを取得することができます。

対話型トークンを含むループバック セッションは、切断した後、同じセッション、または同じコンピューター上の別のセッションから再接続できます。ただし、悪意のあるアクセスを防ぐために、対話型トークンを持つループバック セッションには、そのセッションが作成されたコンピューターからしか再接続できません。

切断されたセッションでのジョブの待機

Wait-Job コマンドレットは、ジョブが完了するまで待機してから、コマンド プロンプトまたは次のコマンドに戻ります。Wait-Job は、既定で、ジョブが実行されているセッションが切断された場合に制御を返します。セッションが再接続される (状態が Opened になる) まで待機するよう Wait-Job コマンドレットに指示するには、Force パラメーターを使用します。詳細については、「Wait-Job」を参照してください。

堅牢なセッションと意図しない切断

場合によっては、コンピューターの障害やネットワークの停止が原因で、PSSession が意図せずに切断されることがあります。Windows PowerShell は PSSession の回復を試みますが、それが成功するかどうかは、原因の重大度とその持続期間によって決まります。

意図せずに切断された PSSession の状態は Broken または Closed になる場合がありますが、Disconnected になる場合もあります。State の値が Disconnected の場合は、セッションを意図的に切断した場合と同じ方法で PSSession を管理できます。たとえば、Connect-PSSession コマンドレットを使用するとセッションに再接続でき、Receive-PSSession コマンドレットを使用すると、セッションが切断されている間に実行されたコマンドの結果を取得できます。

PSSession が作成されたセッションを閉じる (終了する) ときにその PSSession でコマンドが実行されている場合は、Windows PowerShell によって、PSSession はリモート コンピューター上に Disconnected 状態で保持されます。PSSession が作成されたセッションを閉じる (終了する) ときにその PSSession でコマンドが実行されていない場合は、Windows PowerShell によって PSSession が保持されることはありません。

キーワード

about_Disconnected_Sessions

関連項目

about_Jobs

about_Remote に関するページ

about_Remote_Variables

about_PSSessions

about_Session_Configurations

Disconnect-PSSession

Connect-PSSession

Get-PSSession

Receive-PSSession

Invoke-Command