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]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-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
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Receive-PSSession
コマンドレットは、切断された PowerShell セッション (PSSession) で実行されているコマンドの結果を取得します。 セッションが現在接続されている場合、Receive-PSSession
はセッションが切断されたときに実行されていたコマンドの結果を取得します。 セッションがまだ切断されている場合、Receive-PSSession
はセッションに接続し、中断されたコマンドを再開し、セッションで実行されているコマンドの結果を取得します。
このコマンドレットは、PowerShell 3.0 で導入されました。
Connect-PSSession
コマンドに加えて、または代わりに Receive-PSSession
を使用できます。
Receive-PSSession
は、他のセッションまたは他のコンピューターで開始された切断または再接続されたセッションに接続できます。
Receive-PSSession
は、Disconnect-PSSession
コマンドレットまたは Invoke-Command
InDisconnectedSession パラメーターを使用して意図的に切断された PSSessions で動作します。 または、ネットワークの中断によって意図せず切断されました。
Receive-PSSession
コマンドレットを使用して、コマンドが実行または中断されていないセッションに接続する場合、Receive-PSSession
はセッションに接続しますが、出力やエラーは返されません。
切断されたセッション機能の詳細については、「about_Remote_Disconnected_Sessions」を参照してください。
一部の例では、スプラッティングを使用して行の長さを減らし、読みやすさを向上させます。 詳細については、about_Splattingを参照してください。
例
例 1: PSSession に接続する
次の使用例は、リモート コンピューター上のセッションに接続し、セッションで実行されているコマンドの結果を取得します。
Receive-PSSession -ComputerName Server01 -Name ITTask
Receive-PSSession
は、ComputerName パラメーターを持つリモート コンピューターを指定します。
Name パラメーターは、Server01 コンピューター上の ITTask セッションを識別します。 この例では、ITTask セッションで実行されていたコマンドの結果を取得します。
コマンドは OutTarget パラメーターを使用しないため、コマンド ラインに結果が表示されます。
例 2: 切断されたセッションのすべてのコマンドの結果を取得する
この例では、2 台のリモート コンピューター上のすべての切断されたセッションで実行されているすべてのコマンドの結果を取得します。
セッションが切断されていないか、コマンドを実行していない場合、Receive-PSSession
はセッションに接続せず、出力やエラーは返されません。
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
は、ComputerName パラメーターを使用してリモート コンピューターを指定します。 オブジェクトはパイプラインに送信され、Receive-PSSession
されます。
例 3: セッションで実行されているスクリプトの結果を取得する
この例では、Receive-PSSession
コマンドレットを使用して、リモート コンピューターのセッションで実行されていたスクリプトの結果を取得します。
$parms = @{
ComputerName = "Server01"
Name = "ITTask"
OutTarget = "Job"
JobName = "ITTaskJob01"
Credential = "Domain01\Admin01"
}
Receive-PSSession @parms
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ITTaskJob01 Running True Server01
このコマンドは、ComputerName パラメーターと Name パラメーターを使用して、切断されたセッションを識別します。
OutTarget パラメーターと値 Job を使用して、結果をジョブとして返す Receive-PSSession
を指示します。
JobName パラメーターは、再接続されたセッション内のジョブの名前を指定します。
Credential パラメーターは、ドメイン管理者のアクセス許可を使用して Receive-PSSession
コマンドを実行します。
出力は、Receive-PSSession
が現在のセッションでジョブとして結果を返したことを示しています。 ジョブの結果を取得するには、Receive-Job
コマンドを使用します
例 4: ネットワークの停止後に結果を取得する
この例では、Receive-PSSession
コマンドレットを使用して、ネットワークの停止によってセッション接続が中断された後にジョブの結果を取得します。 PowerShell は、次の 4 分間に 1 秒に 1 回セッションの再接続を自動的に試行し、4 分間のすべての試行が失敗した場合にのみ、作業を中止します。
PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
8 AD Server01 Opened ADEndpoint Available
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
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell None
8 AD Server01 Disconnected ADEndpoint None
PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ADJob Running True Server01
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell Busy
8 AD Server01 Opened ADEndpoint Available
New-PSSession
コマンドレットは、Server01 コンピューター上にセッションを作成し、そのセッションを $s
変数に保存します。
$s
変数には、状態 が開き、可用性 が使用可能であることが表示されます。 これらの値は、セッションに接続していること、およびセッションでコマンドを実行できることを示します。
Invoke-Command
コマンドレットは、$s
変数内のセッションでスクリプトを実行します。 スクリプトの実行とデータの返しが開始されますが、セッションを中断するネットワーク障害が発生します。 ユーザーはセッションを終了し、ローカル コンピューターを再起動する必要があります。
コンピューターが再起動すると、ユーザーは PowerShell を起動し、Get-PSSession
コマンドを実行して Server01 コンピューターでセッションを取得します。 出力は、AD セッションが Server01 コンピューターにまだ存在することを示しています。
状態 は、AD セッションが切断されていることを示します。
可用性 値 None は、セッションがクライアント セッションに接続されていないことを示します。
Receive-PSSession
コマンドレットは、AD セッションに再接続し、セッションで実行されたスクリプトの結果を取得します。 このコマンドは、OutTarget パラメーターを使用して、ADJobという名前のジョブで結果を要求します。 このコマンドはジョブ オブジェクトを返し、出力はスクリプトがまだ実行されていることを示します。
Get-PSSession
コマンドレットは、ジョブの状態を確認するために使用されます。 出力は、Receive-PSSession
コマンドレットが AD セッションに再接続されたことを確認します。このセッションは、コマンドで開いて使用できるようになりました。 そして、スクリプトは実行を再開し、スクリプトの結果を取得しています。
例 5: 切断されたセッションに再接続する
この例では、Receive-PSSession
コマンドレットを使用して、意図的に切断されたセッションに再接続し、セッションで実行されていたジョブの結果を取得します。
PS> $parms = @{
InDisconnectedSession = $True
ComputerName = "Server01", "Server02", "Server30"
FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
Name = "BugStatus"
SessionOption = @{IdleTimeout = 86400000}
ConfigurationName = "ITTasks"
}
PS> Invoke-Command @parms
PS> Exit
PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $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
PS> $Results = Receive-PSSession -Session $s
PS> $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
PS> $Results
Bug Report - Domain 01
----------------------
ComputerName BugCount LastUpdated
-------------- --------- ------------
Server01 121 Friday, December 30, 2011 5:03:34 PM
Invoke-Command
コマンドレットは、3 台のリモート コンピューターでスクリプトを実行します。 スクリプトは複数のデータベースからデータを収集して集計するため、多くの場合、スクリプトが完了するまでに時間がかかります。 このコマンドは、スクリプトを開始してからすぐにセッションを切断する InDisconnectedSession パラメーターを使用します。
SessionOption パラメーターは、切断されたセッションの IdleTimeout 値を拡張します。 切断されたセッションは、切断された時点からアイドル状態と見なされます。 コマンドが完了し、セッションに再接続できるように、アイドルタイムアウトを十分な長さに設定することが重要です。
IdleTimeout は、PSSession を作成し、切断したときにのみ変更する場合にのみ設定できます。
PSSession に接続したり、その結果を受け取ったりするときに、IdleTimeout 値を変更することはできません。 コマンドを実行すると、ユーザーは PowerShell を終了し、コンピューターを閉じます。
翌日、ユーザーは Windows を再開し、PowerShell を起動し、Get-PSSession
を使用してスクリプトが実行されていたセッションを取得します。 このコマンドは、コンピューター名、セッション名、およびセッション構成の名前によってセッションを識別し、セッションを $s
変数に保存します。
$s
変数の値が表示され、セッションが切断されているがビジー状態でないことを示します。
Receive-PSSession
コマンドレットは、$s
変数内のセッションに接続し、その結果を取得します。
このコマンドは、結果を $Results
変数に保存します。
$s
変数が表示され、セッションが接続され、コマンドで使用可能であることが示されます。
スクリプトの結果、$Results
変数が PowerShell コンソールに表示されます。 いずれかの結果が予期しない場合、ユーザーはセッションでコマンドを実行して根本原因を調査できます。
例 6: 切断されたセッションでのジョブの実行
この例では、切断されたセッションで実行されているジョブの動作を示します。
PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Running True Server01
PS> $s | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server01 Disconnected Microsoft.PowerShell None
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Disconnected True Server01
PS> Receive-Job $j -Keep
Return 1
Return 2
PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j
Return 3
Return 4
New-PSSession
コマンドレットは、Server01 コンピューターにテスト セッションを作成します。 このコマンドは、セッションを $s
変数に保存します。
Invoke-Command
コマンドレットは、$s
変数内のセッションでコマンドを実行します。 このコマンドは、AsJob パラメーターを使用してコマンドをジョブとして実行し、現在のセッションにジョブ オブジェクトを作成します。
このコマンドは、$j
変数に保存されているジョブ オブジェクトを返します。
$j
変数には、ジョブ オブジェクトが表示されます。
$s
変数内のセッション オブジェクトはパイプラインから Disconnect-PSSession
に送信され、セッションは切断されます。
$j
変数が表示され、$j
変数内のジョブ オブジェクトを切断した結果が表示されます。 ジョブの状態が切断されました。
Receive-Job
は、$j
変数内のジョブで実行されます。 出力は、ジョブがセッションの前に出力を返し始め、ジョブが切断されたことを示しています。
Connect-PSSession
コマンドレットは、同じクライアント セッションで実行されます。 このコマンドは、Server01 コンピューター上のテスト セッションに再接続し、$s2
変数にセッションを保存します。
Receive-PSSession
コマンドレットは、セッションで実行されていたジョブの結果を取得します。 コマンドは同じセッションで実行されるため、Receive-PSSession
は既定で結果をジョブとして返し、同じジョブ オブジェクトを再利用します。 このコマンドは、ジョブを $j2
変数に保存します。
Receive-Job
コマンドレットは、$j
変数内のジョブの結果を取得します。
パラメーター
-AllowRedirection
このコマンドレットによって、代替の Uniform Resource Identifier (URI) へのこの接続のリダイレクトが許可されることを示します。
ConnectionURI パラメーターを使用すると、リモート宛先は別の URI にリダイレクトする命令を返すことができます。 既定では、PowerShell は接続をリダイレクトしませんが、このパラメーターを使用して接続をリダイレクトできます。
MaximumConnectionRedirectionCount セッション オプションの値を変更して、接続をリダイレクトする回数を制限することもできます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ApplicationName
アプリケーションを指定します。 このコマンドレットは、指定されたアプリケーションを使用するセッションにのみ接続します。
接続 URI のアプリケーション名セグメントを入力します。 たとえば、次の接続 URI では、WSMan はアプリケーション名です:http://localhost:5985/WSMAN
。
セッションのアプリケーション名は、セッションの Runspace.ConnectionInfo.AppName プロパティに格納されます。
パラメーターの値は、セッションの選択とフィルター処理に使用されます。 セッションで使用されるアプリケーションは変更されません。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Authentication
切断されたセッションに再接続するためにコマンドでユーザー資格情報を認証するために使用されるメカニズムを指定します。 このパラメーターに使用できる値は次のとおりです。
- デフォルト
- 基本的な
- Credssp
- ダイジェスト
- Kerberos
- 交渉する
- NegotiateWithImplicitCredential
既定値は Default です。
このパラメーターの値の詳細については、「AuthenticationMechanism 列挙を参照してください。
注意
資格情報セキュリティ サポート プロバイダー (CredSSP) 認証は、ユーザー資格情報が認証されるリモート コンピューターに渡される認証で、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムにより、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターが侵害された場合、それに渡される資格情報を使用してネットワーク セッションを制御できます。
型: | AuthenticationMechanism |
指定可能な値: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
配置: | Named |
規定値: | Default |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-CertificateThumbprint
切断されたセッションに接続するアクセス許可を持つユーザー アカウントのデジタル公開キー証明書 (X509) を指定します。 証明書の拇印を入力します。
証明書は、クライアント証明書ベースの認証で使用されます。 証明書はローカル ユーザー アカウントにのみマップでき、ドメイン アカウントでは機能しません。
証明書の拇印を取得するには、PowerShell Cert:
ドライブで Get-Item
または Get-ChildItem
コマンドを使用します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ComputerName
切断されたセッションが格納されているコンピューターを指定します。 セッションは、サーバー側にあるコンピューター、または接続の受信側に格納されます。 既定値はローカル コンピューターです。
1 台のコンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名 (FQDN) を入力します。
ワイルドカード文字は使用できません。 ローカル コンピューターを指定するには、コンピューター名、ドット (.
)、$env:COMPUTERNAME
、または localhost を入力します。
型: | String |
Aliases: | Cn |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-ConfigurationName
セッション構成の名前を指定します。 このコマンドレットは、指定されたセッション構成を使用するセッションにのみ接続します。
セッション構成の構成名または完全修飾リソース URI を入力します。 構成名のみを指定すると、次のスキーマ URI が先頭に付加されます。
http://schemas.microsoft.com/powershell
.
セッションの構成名は、セッションの ConfigurationName プロパティに格納されます。
パラメーターの値は、セッションの選択とフィルター処理に使用されます。 セッションで使用されるセッション構成は変更されません。
セッション構成の詳細については、「about_Session_Configurations」を参照してください。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ConnectionUri
切断されたセッションへの再接続に使用される接続エンドポイントを定義する URI を指定します。
URI は完全修飾されている必要があります。 文字列の形式は次のとおりです。
<Transport>://<ComputerName>:<Port>/<ApplicationName>
既定値は次のとおりです。
http://localhost:5985/WSMAN
接続 URI を指定しない場合は、UseSSL、ComputerName、ポート、および ApplicationName パラメーターを使用して、接続 URI 値を指定できます。
URI の トランスポート セグメントの有効な値は、HTTP と HTTPS です。 トランスポート セグメントで接続 URI を指定してもポートを指定しない場合、セッションは標準ポート (HTTP の場合は 80、HTTPS の場合は 443) で作成されます。 PowerShell リモート処理に既定のポートを使用するには、HTTP の場合はポート 5985、HTTPS には 5986 を指定します。
宛先コンピューターが接続を別の URI にリダイレクトする場合、コマンドで AllowRedirection パラメーターを使用しない限り、PowerShell はリダイレクトを禁止します。
型: | Uri |
Aliases: | URI, CU |
配置: | 0 |
規定値: | http://localhost:5985/WSMAN |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Credential
切断されたセッションに接続するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
User01 や Domain01\User01などのユーザー名を入力するか、Get-Credential
コマンドレットによって生成された PSCredential オブジェクトを入力します。 ユーザー名を入力すると、パスワードの入力を求められます。
資格情報は PSCredential オブジェクトに格納され、パスワードは SecureStringとして格納されます。
手記
SecureString データ保護
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Id
切断されたセッションの ID を指定します。 ID パラメーターは、切断されたセッションが以前に現在のセッションに接続されている場合にのみ機能します。
このパラメーターは、セッションがローカル コンピューターに格納されているが、現在のセッションに接続されていない場合は有効ですが、有効ではありません。
型: | Int32 |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-InstanceId
切断されたセッションのインスタンス ID を指定します。 インスタンス ID は、ローカル コンピューターまたはリモート コンピューター上の PSSession を一意に識別する GUID です。 インスタンス ID は、PSSessionの InstanceID プロパティに格納されます。
型: | Guid |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-JobName
返されるジョブのフレンドリ名 Receive-PSSession
指定します。
Receive-PSSession
は、OutTarget パラメーターの値が Job であるか、切断されたセッションで実行されているジョブが現在のセッションで開始された場合にジョブを返します。
切断されたセッションで実行されているジョブが現在のセッションで開始された場合、PowerShell はセッション内の元のジョブ オブジェクトを再利用し、JobName パラメーターの値を無視します。
切断されたセッションで実行されているジョブが別のセッションで開始された場合、PowerShell は新しいジョブ オブジェクトを作成します。 既定の名前を使用しますが、このパラメーターを使用して名前を変更できます。
OutTarget パラメーターの既定値または明示的な値が Job でない場合、コマンドは成功しますが、JobName パラメーターは無効です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Name
切断されたセッションのフレンドリ名を指定します。
型: | String |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-OutTarget
セッションの結果を返す方法を決定します。 このパラメーターに使用できる値は次のとおりです。
- ジョブを
します。 ジョブ オブジェクトで非同期的に結果を返します。 JobName パラメーターを使用して、ジョブの名前または新しい名前を指定できます。 - ホストを
します。 結果をコマンド ラインに (同期的に) 返します。 コマンドが再開されている場合、または結果が多数のオブジェクトで構成されている場合、応答が遅れる可能性があります。
OutTarget パラメーターの既定値は Host です。 切断されたセッションで受信されているコマンドが現在のセッションで開始された場合、OutTarget パラメーターの既定値は、コマンドが開始された形式です。 コマンドがジョブとして開始された場合、既定ではジョブとして返されます。 それ以外の場合は、既定でホスト プログラムに返されます。
通常、ホスト プログラムは、返されたオブジェクトを遅延なくコマンド ラインに表示しますが、この動作は異なる場合があります。
型: | OutTarget |
指定可能な値: | Default, Host, Job |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Port
セッションへの再接続に使用するリモート コンピューターのネットワーク ポートを指定します。 リモート コンピューターに接続するには、接続で使用されるポートをリッスンしている必要があります。 既定のポートは、HTTP の WinRM ポートである 5985 と、HTTPS の WinRM ポートである 5986 です。
代替ポートを使用する前に、そのポートをリッスンするようにリモート コンピューター上の WinRM リスナーを構成する必要があります。 リスナーを構成するには、PowerShell プロンプトで次の 2 つのコマンドを入力します。
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
必要な場合を除き、Port パラメーターは使用しないでください。 コマンドに設定されているポートは、コマンドが実行されるすべてのコンピューターまたはセッションに適用されます。 代替ポート設定により、コマンドがすべてのコンピューターで実行できなくなる可能性があります。
型: | Int32 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Session
切断されたセッションを指定します。
PSSession を含む変数、または PSSessionを作成または取得するコマンド (Get-PSSession
コマンドなど) を入力します。
型: | PSSession |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-SessionOption
セッションの詳細オプションを指定します。
New-PSSessionOption
コマンドレットを使用して作成するなど、SessionOption オブジェクトを入力するか、キーがセッション オプション名で値がセッション オプション値であるハッシュ テーブルを入力します。
オプションの既定値は、設定されている場合、$PSSessionOption
基本設定変数の値によって決まります。 それ以外の場合、既定値はセッション構成で設定されたオプションによって確立されます。
セッション オプションの値は、$PSSessionOption
基本設定変数およびセッション構成で設定されたセッションの既定値よりも優先されます。 ただし、セッション構成で設定された最大値、クォータ、または制限よりも優先されません。
デフォルト値を含むセッション・オプションの説明については、New-PSSessionOption
を参照してください。
$PSSessionOption 基本設定変数の詳細については、about_Preference_Variablesを参照してください。 セッション構成の詳細については、「about_Session_Configurations」を参照してください。
型: | PSSessionOption |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UseSSL
このコマンドレットが Ssl (Secure Sockets Layer) プロトコルを使用して切断されたセッションに接続することを示します。 既定では、SSL は使用されません。
WS-Management は、ネットワーク経由で送信されるすべての PowerShell コンテンツを暗号化します。 UseSSL は、HTTP 接続ではなく HTTPS 接続経由でデータを送信する追加の保護です。
このパラメーターを使用していて、コマンドに使用されているポートで SSL を使用できない場合、コマンドは失敗します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
Get-PSSession
コマンドレットによって返されるオブジェクトなど、セッション オブジェクトをこのコマンドレットにパイプできます。
このコマンドレットにセッション ID をパイプできます。
このコマンドレットでは、セッションのインスタンス ID をパイプ処理できます。
このコマンドレットにセッション名をパイプできます。
出力
System.Management.Automation.Job or PSObject
このコマンドレットは、切断されたセッションで実行されたコマンド (ある場合) の結果を返します。
OutTarget パラメーターの値または既定値が Job の場合、Receive-PSSession
はジョブ オブジェクトを返します。 それ以外の場合は、そのコマンドの結果を表すオブジェクトが返されます。
メモ
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Receive-PSSession
は、切断されたセッションからのみ結果を取得します。 切断して再接続できるのは、PowerShell 3.0 以降のバージョンを実行するコンピューターに接続されている、または終了するセッションだけです。
切断されたセッションで実行されていたコマンドで結果が生成されなかった場合、または結果が既に別のセッションに返された場合、Receive-PSSession
は出力を生成しません。
セッションの出力バッファリング モードは、セッションが切断されたときにセッション内のコマンドが出力を管理する方法を決定します。 セッションの OutputBufferingMode オプションの値が Drop で、出力バッファーがいっぱいになると、コマンドは出力の削除を開始します。
Receive-PSSession
はこの出力を回復できません。 出力バッファリング モード オプションの詳細については、New-PSSessionOption および New-PSTransportOption コマンドレット
PSSession に接続したり、結果を受け取ったりするときに、PSSession のアイドル タイムアウト値を変更することはできません。
Receive-PSSession
の SessionOption パラメーターは、IdleTimeout 値を持つ SessionOption オブジェクトを受け取ります。 ただし、SessionOption オブジェクトの IdleTimeout 値と、$PSSessionOption
変数の IdleTimeout 値は、PSSession に接続したり、結果を受け取ったりするときに無視されます。
-
PSSessionを作成するとき、
New-PSSession
またはInvoke-Command
コマンドレットを使用して、PSSessionから切断するときに、PSSession のアイドルタイムアウトを設定および変更できます。 - PSSession の IdleTimeout プロパティは、切断されたセッションがリモート コンピューターで維持される期間を決定するため、切断されたセッションにとって非常に重要です。 切断されたセッションは、切断されたセッションでコマンドが実行されている場合でも、切断された時点からアイドル状態と見なされます。
Invoke-Command
コマンドレットの AsJob パラメーターを使用してリモート セッションでジョブを開始すると、ジョブがリモート セッションで実行されている場合でも、ジョブ オブジェクトが現在のセッションに作成されます。 リモート セッションを切断すると、現在のセッションのジョブ オブジェクトがジョブから切断されます。 ジョブ オブジェクトには、返された結果が含まれていますが、切断されたセッションでジョブから新しい結果を受け取りません。
実行中のジョブを含むセッションに別のクライアントが接続した場合、元のセッションの元のジョブ オブジェクトに配信された結果は、新しく接続されたセッションでは使用できません。 再接続されたセッションでは、元のジョブ オブジェクトに配信されなかった結果のみを使用できます。
同様に、セッションでスクリプトを開始してからセッションから切断した場合、切断前にスクリプトがセッションに配信した結果は、セッションに接続する別のクライアントでは使用できません。
切断しようとしているセッションでデータが失われるのを防ぐには、Invoke-Command
コマンドレットの InDisconnectedSession パラメーターを使用します。 このパラメーターは、結果が現在のセッションに返されないようにするため、セッションが再接続されたときにすべての結果を使用できます。
Invoke-Command
コマンドレットを使用してリモート セッションで Start-Job
コマンドを実行することで、データ損失を防ぐこともできます。 この場合、ジョブ オブジェクトはリモート セッションに作成されます。
Receive-PSSession
コマンドレットを使用してジョブの結果を取得することはできません。 代わりに、Connect-PSSession
コマンドレットを使用してセッションに接続し、Invoke-Command
コマンドレットを使用してセッションで Receive-Job
コマンドを実行します。
実行中のジョブを含むセッションが切断されてから再接続されると、元のジョブ オブジェクトは、ジョブが切断されて同じセッションに再接続され、再接続するコマンドで新しいジョブ名が指定されていない場合にのみ再利用されます。 セッションが別のクライアント セッションに再接続されるか、新しいジョブ名が指定されている場合、PowerShell は新しいセッションの新しいジョブ オブジェクトを作成します。
PSSessionを切断すると、セッション状態は切断され、可用性は None になります。
- State プロパティの値は、現在のセッションに対して相対的です。 Disconnected の値は、PSSession が現在のセッションに接続されていないことを意味します。 ただし、PSSession がすべてのセッションから切断されているわけではありません。 別のセッションに接続されている可能性があります。 セッションに接続できるか再接続できるかを確認するには、Availability プロパティを使用します。
- 可用性 値 None は、セッションに接続できることを示します。 [ビジー] の値は、別のセッションに接続されているため、PSSession に接続できないことを示します。
- セッションの State プロパティの値の詳細については、「RunspaceState」を参照してください。
- セッションの Availability プロパティの値の詳細については、「RunspaceAvailability」を参照してください。