次の方法で共有


Receive-PSSession

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

構文

Receive-PSSession
       [-Session] <PSSession>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-Id] <Int32>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

説明

Receive-PSSession コマンドレットは、切断されたWindows PowerShell セッション (PSSession) で実行されているコマンドの結果を取得します。 接続が確立しているセッションに Receive-PSSession を実行した場合には、そのセッションが切断された時点で実行していたコマンドの結果を取得します。 切断されている状態のセッションに Receive-PSSession を実行した場合には、そのセッションに接続し、一時停止していたコマンドがあればそれを実行したうえで、セッションで実行しているコマンドの結果を取得します。

receive-PSSession は、Connect-PSSession コマンドに加えて、または の代わりに使用できます。 Receive-PSSession は、切断または再接続されたセッションに接続できます。 これには、他のセッションまたは他のコンピューターで開始されたものが含まれます。

Receive-PSSession は、Invoke-Command コマンドレットの Disconnect-PSSession コマンドレットまたは InDisconnectedSession パラメーターを使用するなど、意図的に切断された PSSession に対して機能します。ネットワークの中断などによって意図せずに動作します。

Receive-PSSession コマンドレットを使用して接続するセッションに実行中のコマンドと一時停止中のコマンドのいずれも存在しなかった場合、Receive-PSSession はそのセッションに接続するものの、出力やエラーを返すことはありません。

切断されたセッションの機能の詳細については、「about_Remote_Disconnected_Sessions」を参照してください。

このコマンドレットは、Windows PowerShell 3.0 で導入されました。

例 1: PSSession に接続する

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask

このコマンドは、Receive-PSSession コマンドレットを使用してコンピューター Server01 の ITTask セッションに接続し、そのセッションで実行していたコマンドの結果を取得するものです。

このコマンドは OutTarget パラメーターを使用しないため、結果がコマンド ラインに表示されます。

例 2: 切断されたセッションのすべてのコマンドの結果を取得する

PS C:\> Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

このコマンドは、コンピューター Server01 および Server02 の切断された全セッションで実行している全コマンドの結果を取得するものです。

切断されているセッションがない場合、およびコマンドを実行しているセッションがない場合には、Receive-PSSession がセッションに接続することはないため、結果やエラーが返されることはありません。

例 3: セッションで実行されているスクリプトの結果を取得する

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask -OutTarget Job -JobName ITTaskJob01 -Credential Domain01\Admin01
Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

このコマンドは、Receive-PSSession コマンドレットを使用して、コンピューター Server01 の ITTask セッションで実行していたスクリプトの結果を取得するものです。

このコマンドでは、ComputerName および Name の 2 つのパラメーターを使用して、切断されたセッションを特定します。 OutTarget パラメーターの値には Job を使用することによって、Receive-PSSession が結果をジョブとして返すようにします。また、JobName パラメーターでは、再接続したセッションのジョブの名前を指定します。

コマンドは 、Credential パラメーターを使用して、ドメイン管理者のアクセス許可を使用して Receive-PSSession コマンドを実行します。

出力は、Receive-PSSession が現在のセッションのジョブとして結果を返したことを示しています。 ジョブの結果を取得するには、Receive-Job コマンドを使用します

例 4: ネットワークの停止後に結果を取得する

The first command uses the New-PSSession cmdlet to create a session on the Server01 computer. The command saves the session in the $s variable.The second command gets the session in the $s variable. Notice that the **State** is Opened and the **Availability** is Available. These values indicate that you are connected to the session and can run commands in the session.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS C:\> $s

Id Name    ComputerName    State         ConfigurationName     Availability
 -- ----    ------------    -----         -----------------     ------------
  8 AD      Server01        Opened        ADEndpoint            Available

The third command uses the Invoke-Command cmdlet to run a script in the session in the $s variable.The script begins to run and return data, but a network outage occurs that interrupts the session. The user has to exit the session and restart the local computer.
PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1
 Running "New-ADResolve.ps1"

# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes

When the computer restarts, the user starts Windows PowerShell and runs a Get-PSSession command to get sessions on the Server01 computer. The output shows that the AD session still exists on the Server01 computer. The **State** indicates that it is disconnected and the **Availability** value, None, indicates that it is not connected to any client sessions.
PS C:\> Get-PSSession -ComputerName Server01

 Id Name    ComputerName    State         ConfigurationName     Availability
 -- ----    ------------    -----         -----------------     ------------
  1 Backup  Server01        Disconnected  Microsoft.PowerShell          None
  8 AD      Server01        Disconnected  ADEndpoint                   None


The fifth command uses the **Receive-PSSession** cmdlet to reconnect to the AD session and get the results of the script that ran in the session. The command uses the *OutTarget* parameter to request the results in a job named ADJob.The command returns a job object. The output indicates that the script is still running.
PS C:\> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id     Name      State         HasMoreData     Location
--     ----      -----         -----------     --------
16     ADJob     Running       True            Server01

The sixth command uses the Get-PSSession cmdlet to check the job state. The output confirms that, in addition to resuming script execution and getting the script results, the **Receive-PSSession** cmdlet reconnected to the AD session, which is now open and available for commands.
PS C:\> Get-PSSession -ComputerName Server01
Id Name    ComputerName    State         ConfigurationName     Availability
-- ----    ------------    -----         -----------------     ------------
 1 Backup  Server01        Disconnected  Microsoft.PowerShell          Busy
 8 AD      Server01        Opened        ADEndpoint                Available

この例では Receive-PSSession コマンドレットを使用して、ネットワーク停止によってセッションの接続が中断した後のジョブの結果を取得します。 Windows PowerShellは、次の 4 分間、セッションの再接続を 1 秒ごとに 1 回自動的に試行し、4 分間のすべての試行が失敗した場合にのみ作業を中止します。

例 5: 切断されたセッションに再接続する

The first command uses the Invoke-Command cmdlet to run a script on the three remote computers. Because the scripts gathers and summarize data from multiple databases, it often takes the script an extended time to finish. The command uses the *InDisconnectedSession* parameter, which starts the scripts and then immediately disconnects the sessions.The command uses the *SessionOption* parameter to extend the **IdleTimeout** value of the disconnected session. Disconnected sessions are considered to be idle from the moment they are disconnected, so it is important to set the idle time-out for long enough that the commands can complete and you can reconnect to the session, if necessary. You can set the **IdleTimeout** only when you create the **PSSession** and change it only when you disconnect from it. You cannot change the **IdleTimeout** value when you connect to a **PSSession** or receiving its results.After running the command, the user exits Windows PowerShell and closes the computer .
PS C:\> Invoke-Command -InDisconnectedSession -ComputerName Server01, Server02, Server30 -FilePath \\Server12\Scripts\SharedScripts\Get-BugStatus.ps1 -Name BugStatus -SessionOption @{IdleTimeout = 86400000} -ConfigurationName ITTasks# Exit

# Start Windows PowerShell on a different computer.

On the next day, the user resumes Windows and starts Windows PowerShell. The second command uses the Get-PSSession cmdlet to get the sessions in which the scripts were running. The command identifies the sessions by the computer name, session name, and the name of the session configuration and saves the sessions in the $s variable.The third command displays the value of the $s variable. The output shows that the sessions are disconnected, but not busy, as expected.
PS C:\> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
 PS C:\> $s
Id Name    ComputerName    State         ConfigurationName     Availability
 -- ----    ------------    -----         -----------------     ------------
  1 ITTask  Server01        Disconnected  ITTasks                       None
  8 ITTask  Server02        Disconnected  ITTasks                       None
  2 ITTask  Server30        Disconnected  ITTasks                       None


The fourth command uses the **Receive-PSSession** cmdlet to connect to the sessions in the $s variable and get their results. The command saves the results in the $Results variable.Another display of the $s variable shows that the sessions are connected and available for commands.
PS C:\> $Results = Receive-PSSession -Session $s
PS C:\> $s
 Id Name    ComputerName    State         ConfigurationName     Availability
-- ----    ------------    -----         -----------------     ------------
 1 ITTask  Server01        Opened        ITTasks                  Available
 8 ITTask  Server02        Opened        ITTasks                  Available
 2 ITTask  Server30        Opened        ITTasks                  Available


The fifth command displays the script results in the $Results variable. If any of the results are unexpected, the user can run commands in the sessions to investigate.
PS C:\> $Results
Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

この例では Receive-PSSession コマンドレットを使用して、意図的に切断したセッションに再接続し、そのセッションで実行していたジョブの結果を取得します。

例 6: 切断されたセッションでジョブを実行する

The first command uses the New-PSSession cmdlet to create the Test session on the Server01 computer. The command saves the session in the $s variable.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name Test

The second command uses the Invoke-Command cmdlet to run a command in the session in the $s variable. The command uses the *AsJob* parameter to run the command as a job and to create the job object in the current session. The command returns a job object, which is saved in the $j variable.The third command displays the job object in the $j variable.
PS C:\> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob

PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01

The fourth command disconnects the session in the $s variable.
PS C:\> $s | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell  None

The fifth command shows the effect of disconnecting on the job object in the $j variable. The job state is now Disconnected.
PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01

The sixth command runs a Receive-Job command on the job in the $j variable. The output shows that the job began to return output before the session and the job were disconnected.
PS C:\> Receive-Job $j -Keep
Return 1
Return 2

The seventh command is run in the same client session. The command uses the Connect-PSSession cmdlet to reconnect to the Test session on the Server01 computer and saves the session in the $s2 variable.
PS C:\> $s2 = Connect-PSSession -ComputerName Server01 -Name Test

The eighth command uses the **Receive-PSSession** cmdlet to get the results of the job that was running in the session. Because the command is run in the same session, **Receive-PSSession** returns the results as a job by default and reuses the same job object. The command saves the job in the $j2 variable.The ninth command uses the **Receive-Job** cmdlet to get the results of the job in the $j variable.
PS C:\> $j2 = Receive-PSSession -ComputerName Server01 -Name Test

PS C:\> Receive-Job $j
Return 3
Return 4

この例では、切断されたセッションで実行しているジョブにどのようなことが起こるかを示します。

パラメーター

-AllowRedirection

このコマンドレットによって、代替の Uniform Resource Identifier (URI) へのこの接続のリダイレクトが許可されることを示します。

ConnectionURI パラメーターを使用すると、リモートの送信先は別の URI にリダイレクトするように指示を返すことができます。 既定では、Windows PowerShellは接続をリダイレクトしませんが、このパラメーターを使用して接続をリダイレクトできます。

また、MaximumConnectionRedirectionCount セッション オプション値を変更することで、接続をリダイレクトする回数を制限することもできます。 New-PSSessionOption コマンドレットの MaximumRedirection パラメーターを使用するか、$PSSessionOption基本設定変数の MaximumConnectionRedirectionCount プロパティを設定します。 既定値は 5 です。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

アプリケーションを指定します。 このコマンドレットは、指定したアプリケーションを使用するセッションにのみ接続します。

接続 URI のアプリケーション名セグメントを入力します。 たとえば、次の接続 URI では、アプリケーション名は WSMan: https://localhost:5985/WSMANです。 セッションのアプリケーション名は、セッションの Runspace.ConnectionInfo.AppName プロパティに保存されています。

このパラメーター値は、セッションを選択してフィルター処理するために使用されます。 セッションが使用するアプリケーションが変更されることはありません。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

切断されたセッションに再接続するためにコマンドでユーザーの資格情報を認証するために使用されるメカニズムを指定します。 このパラメーターの有効値は、次のとおりです。

  • Default
  • Basic
  • Credssp
  • ダイジェスト
  • Kerberos
  • ネゴシエート
  • NegotiateWithImplicitCredential

既定値は Default です。

このパラメーターの値の詳細については、「 AuthenticationMechanism 列挙」を参照してください。

注意事項

資格情報セキュリティ サポート プロバイダー (CredSSP) 認証は、ユーザーの資格情報が認証されるリモート コンピューターに渡され、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムを使用すると、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターのセキュリティが低下している場合は、そのリモート コンピューターに渡される資格情報を使用してネットワーク セッションが制御される場合があります。

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

切断されたセッションに接続するためのアクセス許可を持つユーザー アカウントのデジタル公開キー証明書 (X509) を指定します。 証明書の拇印を入力します。

証明書は、クライアント証明書ベースの認証で使用されます。 これらは、ローカル ユーザー アカウントにのみマップできます。 ドメイン アカウントでは機能しません。

証明書の拇印を取得するには、Windows PowerShell Cert: ドライブで Get-Item コマンドまたは Get-ChildItem コマンドを使用します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

切断されたセッションが格納されているコンピューターを指定します。 セッションは、サーバー側または接続の受信側にあるコンピューターに格納されます。 既定値はローカル コンピューターです。

コンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名を入力します。 ワイルドカード文字は使用できません。 ローカル コンピューターを指定するには、コンピューター名、localhost、またはドット (.) を入力します。

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

指定したセッション構成を使用するセッションにのみ接続します。

セッション構成の構成名または完全修飾リソース URI を入力します。 構成名のみを指定した場合は、次のスキーマ URI が先頭に付加されます。 https://schemas.microsoft.com/powershell セッションの構成名は、セッションの ConfigurationName プロパティに保存されています。

このパラメーター値は、セッションを選択してフィルター処理するために使用されます。 セッションが使用するセッション構成が変更されることはありません。

セッション構成の詳細については、「 about_Session_Configurations」を参照してください。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionUri

切断されたセッションへの再接続に使用される接続エンドポイントを定義する URI を指定します。

URI は完全修飾名にする必要があります。 この文字列の形式は次のとおりです。

<Transport>://<ComputerName>:<Port>/<ApplicationName>

既定値は、次のとおりです。

https://localhost:5985/WSMAN

接続 URI を指定しなかった場合には、UseSSLComputerNamePort、およびApplicationName、の 4 つのパラメーターを使用して接続 URI の値を指定します。

URI の Transport セグメントの有効な値は、HTTP および HTTPS です。 トランスポート セグメントで接続 URI を指定してもポートを指定しない場合、セッションは標準ポート (HTTP の場合は 80、HTTPS の場合は 443) で作成されます。 Windows PowerShell リモート処理用の既定のポートを使用するには、HTTP の場合は 5985、HTTPS の場合は 5986 を指定します。

送信先コンピューターが別の URI に接続をリダイレクトする場合、コマンドで AllowRedirection パラメーターを使用しない限り、Windows PowerShell はリダイレクションを阻止します。

Type:Uri
Aliases:URI, CU
Position:0
Default value:https://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

切断されたセッションに接続するためのアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Domain01\User01 などのユーザー名を入力します。 または、Get-Credential コマンドレットによって生成されたものなど、 PSCredential オブジェクトを入力します。 ユーザー名を入力すると、このコマンドレットによってパスワードの入力が求められます。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

切断されたセッションの ID を指定します。 Id パラメーターは、切断されたセッションが以前に現在のセッションに接続されている場合にのみ機能します。

このパラメーターは、セッションがローカル コンピューター上に保存されているものの、現在のセッションに接続されていなかった場合には、有効でありながら効力を発揮しません。

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

切断されたセッションのインスタンス ID を指定します。

インスタンス ID は、ローカル コンピューターまたはリモート コンピューター上の PSSession を一意に識別する GUID です。

インスタンス ID は、PSSessionInstanceID プロパティに格納されます。

Type:Guid
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-JobName

Receive-PSSession によって返されるジョブのフレンドリ名を指定します。

Receive-PSSession は、 OutTarget パラメーターの値が Job であるか、切断されたセッションで実行されているジョブが現在のセッションで開始された場合にジョブを返します。

切断されているセッションで実行しているジョブが現在のセッションで開始されたものの場合には、Windows PowerShell は、そのセッションの元のジョブ オブジェクトを再利用し、JobName パラメーターの値を無視します。

切断されたセッションで実行されているジョブが別のセッションで開始されたものの場合は、Windows PowerShell は新しいジョブ オブジェクトを作成します。 通常は既定の名前を使用ますが、このパラメータを使用して名前を変更することもできます。

OutTarget パラメーターの既定値または明示的な値が Job でない場合、コマンドは成功しますが、JobName パラメーターは無効です。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

切断されたセッションのフレンドリ名を指定します。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutTarget

セッションの結果を返す方法を指定します。 このパラメーターの有効値は、次のとおりです。

  • ジョブ。 ジョブ オブジェクトで結果を非同期的に返します。 ジョブに名前を付けたり、名前を変更したりするには、JobName パラメーターを使用します。
  • [ホスト] : コマンドラインに (同期的に) 結果を返します。 コマンドを再開しようとしている場合、または結果が多数のオブジェクトで構成される場合には、応答が遅くなる可能性があります。

OutTarget パラメーターの既定値は Host です。 ただし、切断されたセッションで受信しているコマンドが現在のセッションで開始されたものの場合には、OutTarget パラメーターの既定値はコマンドを開始した時点の形式になります。 コマンドがジョブとして開始された場合には、既定ではジョブとして返されます。 それ以外の場合には、既定でホストプログラムに返されます。

ホスト プログラムは通常、返されたオブジェクトを直ちにコマンド ラインに返します。ただし、この動作は変更することができます。

Type:OutTarget
Accepted values:Default, Host, Job
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

セッションに再接続するときに使用するリモート コンピューターのネットワーク ポートを指定します。 リモート コンピューターに接続するには、リモート コンピューターで、接続に使用されるポートをリッスンすることが必要です。 既定のポートは、HTTP の WinRM ポートである 5985 と、HTTPS の WinRM ポートである 5986 です。

代替ポートを使用する前に、そのポートでリッスンするようにリモート コンピューター上の WinRM リスナーを構成する必要があります。 このリスナーを構成するには、Windows PowerShell プロンプトで次の 2 つのコマンドを入力します。

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

必要な場合を除き、Port パラメーターを使用しないでください。 コマンドに設定されているポートは、コマンドが実行されるすべてのコンピューターまたはセッションに適用されます。 代替ポートの設定によっては、コマンドがすべてのコンピューターで実行されない場合があります。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

切断されたセッションを指定します。 PSSession を含む変数、または PSSession を作成または取得するコマンド (Get-PSSession コマンドなど) を入力します。

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

セッションの詳細オプションを指定します。 New-PSSessionOption コマンドレットを使用して作成した SessionOption オブジェクトや、キーがセッション オプション名で値がセッション オプション値であるハッシュ テーブルなど、 SessionOption オブジェクトを入力します。

オプションの既定値は、$PSSessionOption ユーザー設定変数が設定されている場合は、その値によって決まります。 それ以外の場合、既定値はセッション構成で設定されたオプションによって決まります。

セッション オプションの値は、$PSSessionOption ユーザー設定変数およびセッション構成で設定されたセッションの既定値よりも優先されます。 ただし、セッション構成で設定された最大値、クォータ、または制限よりも優先されることはありません。

既定値を含むセッション オプションの説明については、「New-PSSessionOption」を参照してください。 $PSSessionOption基本設定変数の詳細については、「about_Preference_Variables」を参照してください。 セッション構成の詳細については、「 about_Session_Configurations」を参照してください。

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

このコマンドレットは、Ssl (Secure Sockets Layer) プロトコルを使用して切断されたセッションに接続することを示します。 既定では、SSL は使用されません。

WS-Management は、ネットワークを介して転送されるすべての Windows PowerShell コンテンツを暗号化します。 UseSSL は、HTTP 接続ではなく HTTPS 接続を使用してデータを送信することによって、セキュリティをさらに高める役割を果たします。

このパラメーターを使用しても、コマンドに使用されているポートで SSL を使用できない場合、コマンドは失敗します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

PSSession

セッション オブジェクト (Get-PSSession コマンドレットから返されたものなど) をこのコマンドレットにパイプできます。

Int32

セッション ID は、このコマンドレットにパイプできます。

Guid

このコマンドレットでは、セッションのインスタンス ID をパイプ処理できます。

String

セッション名をこのコマンドレットにパイプできます。

出力

System.Management.Automation.Job or PSObject

このコマンドレットは、切断されたセッションで実行されたコマンドの結果 (存在する場合) を返します。 OutTarget パラメーターの値または既定値が Job の場合、Receive-PSSession はジョブ オブジェクトを返します。 それ以外の場合には、コマンドの結果を示すオブジェクトを返します。

メモ

  • Receive-PSSession は、切断されたセッションからのみ結果を取得します。 Windows PowerShell 3.0 以降のバージョンを実行しているコンピューターに接続されている、または終了するセッションのみを切断して再接続できます。

  • 切断されたセッションで実行されていたコマンドが結果を生成しなかった場合や、結果が既に別のセッションに返されていた場合には、Receive-PSSession によって出力が生成されることはありません。

  • セッションの出力バッファー モードは、セッションが切断されたときにセッション内のコマンドが出力を管理する方法を定めるものです。 セッションの OutputBufferingMode オプションの値が Drop で、出力バッファーがいっぱいになると、コマンドは出力の削除を開始します。 Receive-PSSession では、この出力を回復できません。 出力バッファリング モード オプションの詳細については、New-PSSessionOption コマンドレットと New-PSTransportOption コマンドレットのヘルプ トピックを参照してください。

  • PSSession に接続するとき、または結果を受け取るときに、PSSession のアイドル タイムアウト値を変更することはできません。 Receive-PSSessionSessionOption パラメーターは、IdleTimeout 値を持つ SessionOption オブジェクトを受け取ります。 ただし、SessionOption オブジェクトの IdleTimeout 値と、$PSSessionOption変数の IdleTimeout 値は、PSSession に接続するとき、または結果を受信するときに無視されます。

    PSSession の作成時、New-PSSession コマンドレットまたは Invoke-Command コマンドレットを使用して、PSSession から切断するときに、PSSession のアイドルタイムアウトを設定および変更できます。

    PSSessionIdleTimeout プロパティは、切断されたセッションがリモート コンピューターで維持される時間を決定するため、切断されたセッションにとって重要です。 セッションが切断されると、その時点からアイドル状態であると判断されます。これは、そのセッションでコマンドを実行している場合であっても同じです。

  • Invoke-Command コマンドレットの AsJob パラメーターを使用してリモート セッションでジョブを開始すると、ジョブがリモート セッションで実行されている場合でも、ジョブ オブジェクトは現在のセッションに作成されます。 リモート セッションを切断した場合、現在のセッションのジョブ オブジェクトがジョブから切断されます。 ジョブ オブジェクトに返された結果は、その後もそのジョブ オブジェクトに保持されるものの、切断されたセッションのジョブから新しい結果を受け取ることはなくなります。

    実行中のジョブが含まれているセッションに別のクライアントが接続した場合、新しく接続したセッションでは元のセッションの元のジョブ オブジェクトに配信された結果を利用することはできません。 再接続したセッションでは、元のジョブ オブジェクトに配信されなかった結果のみ利用できます。

    これと同じく、あるセッションでスクリプトを起動し、そのセッションを切断した後に、別のクライアントがそのセッションに接続した場合も、切断前にスクリプトがセッションに配信した結果は、新しいクライアントが利用することはできません。

    切断するセッションでデータが失われないようにするには、Invoke-Command コマンドレットの InDisconnectedSession パラメーターを使用します。 このパラメーターは現在のセッションに結果が返されないようにするものであるため、セッションに再接続した時点で結果がすべて利用できるようになります。

    Invoke-Command コマンドレットを使用してリモート セッションで Start-Job コマンドを実行することで、データの損失を防ぐこともできます。 この場合には、リモート セッションでジョブ オブジェクトが作成されます。 Receive-PSSession コマンドレットでは、ジョブの結果を取得することはできません。 代わりに、 Connect-PSSession コマンドレットを使用してセッションに接続し、 Invoke-Command コマンドレットを使用してセッションで Receive-Job コマンドを実行します。

  • 実行中のジョブが含まれるセッションに対する接続を切断した後に再度接続した場合には、ジョブが切断前と同じセッションに再接続され、かつ再接続のためのコマンドで新しいジョブ名を指定しなかった場合にのみ、元のジョブ オブジェクトが再利用されます。 セッションが別のクライアント セッションに再接続された場合や、新しジョブ名が指定された場合には、Windows PowerShell によって新しいセッションの新しいジョブ オブジェクトが作成されます。

  • PSSession を切断すると、セッション状態は切断され、可用性は None になります。

    State プロパティの値は、現在のセッションに関連付けられています。 したがって、Disconnected の値は 、PSSession が現在のセッションに接続されていないことを意味します。 ただし、 PSSession がすべてのセッションから切断されているわけではありません。 別のセッションに接続されている可能性があるためです。 セッションに接続または再接続できるかどうかを確認するには、Availability プロパティを使用します。

    Availability の値が None の場合は、セッションに接続できることを示します。 [ビジー] の値は、 PSSession が別のセッションに接続されているため、接続できないことを示します。

    セッションの State プロパティの値の詳細については、MSDN ライブラリの 「RunspaceState 列挙」 を参照してください。

    セッションの Availability プロパティの値の詳細については、「 RunspaceAvailability 列挙」を参照してください。