Disconnect-PSSession
セッションから切断します。
構文
Disconnect-PSSession
[-Session] <PSSession[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-Name <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-InstanceId <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
コマンドレットはDisconnect-PSSession
、コマンドレットを使用してNew-PSSession
開始された PowerShell セッション (PSSession) を現在のセッションから切断します。 その結果、 PSSession は切断状態になります。 現在のセッションまたはローカル コンピューターまたは別のコンピューター上の別のセッションから、切断された PSSession に接続できます。
コマンドレットは Disconnect-PSSession
、現在のセッションに接続されている開 いている PSSession のみを切断します。 Disconnect-PSSession
は、壊れた PSSession または閉じた PSSession、またはコマンドレットを使用Enter-PSSession
して開始された対話型 PSSession を切断できず、他のセッションに接続されている PSSession を切断することもできません。
切断された PSSession に再接続するには、コマンドレットをConnect-PSSession
Receive-PSSession
使用します。
PSSession が切断されると、PSSession 内のコマンドは、PSSession がタイムアウトするか、PSSession 内のコマンドが完全な出力バッファーによってブロックされない限り、完了するまで引き続き実行されます。 アイドル タイムアウトを変更するには、IdleTimeoutSec パラメーターを使用します。 出力バッファリング モードを変更するには、OutputBufferingMode パラメーターを使用します。また、コマンドレットの InDisconnectedSession パラメーターInvoke-Command
を使用して、切断されたセッションでコマンドを実行することもできます。
切断されたセッション機能の詳細については、「about_Remote_Disconnected_Sessions」を参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1 - 名前でセッションを切断する
このコマンドは、 UpdateSession
Server01 コンピューター上の PSSession を現在のセッションから切断します。 このコマンドでは、Name パラメーターを使用して PSSession を識別します。
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
出力には、切断の試行が成功したことが示されます。 セッションの状態とDisconnected
可用性は、セッションがNone
ビジーでなく、再接続できることを示します。
例 2 - 特定のコンピューターからセッションを切断する
このコマンドは、 ITTask
Server12 コンピューター上の PSSession を現在のセッションから切断します。 セッションは ITTask
現在のセッションで作成され、Server12 コンピューターに接続されます。 このコマンドでは、コマンドレットを Get-PSSession
使用してセッションを取得し、コマンドレットを Disconnect-PSSession
使用してセッションを切断します。
PS> Get-PSSession -ComputerName Server12 -Name ITTask |
Disconnect-PSSession -OutputBufferingMode Drop -IdleTimeoutSec 86400
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server12 Disconnected ITTasks None
このコマンドでは Disconnect-PSSession
、 OutputBufferingMode パラメーターを使用して出力モード Drop
を . この設定により、セッション出力バッファーがいっぱいになった場合でも、セッションで実行されているスクリプトの実行が続行されます。 スクリプトの出力はファイル共有のレポートに書き込まれるため、他の出力は失われる可能性があります。
また、このコマンドは IdleTimeoutSec パラメーターを使用して、セッションのアイドル タイムアウトを 24 時間に延長します。 この設定により、この管理者または他の管理者はセッションに再接続し、実行されたスクリプトを検証して、必要に応じてトラブルシューティングを行うための時間を得ることができます。
例 3 - 複数のコンピューターで複数の PSSession を使用する
この一連のコマンドは、エンタープライズ シナリオでのコマンドレットの使用方法を示しています Disconnect-PSSession
。 このケースでは、新しい技術者がリモート コンピューター上のセッションのスクリプトを開始したときに問題が発生したため、 経験豊富なマネージャーによるセッションへの接続および問題解決を依頼できるように、セッションを切断しました。
PS> $s = New-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
PS> Invoke-Command $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Get-PSSession -Name ITTask -ComputerName Srv1 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> Get-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
2 ITTask Srv2 Opened Microsoft.PowerShell Available
3 ITTask Srv30 Opened Microsoft.PowerShell Available
PS> Get-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> $s = Connect-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
PS> Invoke-Command -Session $s {dir $HOME\Scripts\PatchStatusOutput.ps1}
PS> Invoke-Command -Session $s {mkdir $HOME\Scripts\PatchStatusOutput}
PS> Invoke-Command -Session $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Disconnect-PSSession -Session $s
技術者はまず、複数のリモート コンピューターでセッションを作成し、各セッションでスクリプトを実行します。 最初のコマンドでは、コマンドレットを New-PSSession
使用して、3 台の ITTask
リモート コンピューターでセッションを作成します。 このコマンドは、セッションを変数に $s
保存します。 2 番目のコマンドでは、 コマンドレットの FilePath パラメーターを Invoke-Command
使用して、変数内のセッションでスクリプトを $s
実行します。
Srv1 コンピューターで実行されているスクリプトによって、予期しないエラーが発生します。 技術者は上司に連絡し、サポートを求めます。 マネージャーは、調査できるように、技術者にセッションからの切断を指示します。2 番目のコマンドでは、コマンドレットを Get-PSSession
使用して Srv1 コンピューター上のセッションを取得 ITTask
し、コマンドレットを Disconnect-PSSession
使用してセッションを切断します。 このコマンドは、他のコンピューター上の ITTask
セッションには影響しません。
3 番目のコマンドでは、コマンドレットを Get-PSSession
使用してセッションを ITTask
取得します。 出力は、 ITTask
Srv2 および Srv30 コンピューター上のセッションが、切断するコマンドの影響を受けなかったことを示しています。
マネージャーは、自宅のコンピューターにログオンし、会社のネットワークに接続し、PowerShell を起動し、コマンドレットを Get-PSSession
使用して Srv1 コンピューターでセッションを取得 ITTask
します。 技術者の資格情報を使用してセッションにアクセスします。
次に、マネージャーはコマンドレットを Connect-PSSession
使用して Srv1 コンピューター上のセッションに接続 ITTask
します。 このコマンドでは、セッションが $s
変数に保存されます。
マネージャーは、コマンドレットを Invoke-Command
使用して、変数内のセッションでいくつかの診断コマンドを $s
実行します。 必要なディレクトリが見つからなかったため、スクリプトが失敗したことを認識しています。
マネージャーは、この関数を MkDir
使用してディレクトリを作成し、スクリプトを Get-PatchStatus.ps1
再起動してセッションから切断します。マネージャーは、その結果を技術者に報告し、セッションに再接続してタスクを完了することを提案し、必要なディレクトリが存在しない場合は作成するコマンドをスクリプトに Get-PatchStatus.ps1
追加するよう求めます。
例 4 - PSSession のタイムアウト値を変更する
この例では、セッションの IdleTimeout プロパティの値を修正して、切断できるようにする方法を示します。
切断されたセッションが削除されるまでの期間は、セッションのアイドル タイムアウト プロパティで決定されるため、このプロパティは切断するセッションにとって重要です。 アイドル タイムアウト オプションは、セッションの作成時およびセッションの切断時に設定できます。 セッションのアイドル タイムアウトの既定値は、ローカル コンピューターの $PSSessionOption
基本設定変数とリモート コンピューターのセッション構成で設定されます。 セッションに設定された値はセッション構成で設定された値よりも優先されますが、セッション値は、MaxIdleTimeoutMs 値など、セッション構成で設定されたクォータを超えることはできません。
PS> $Timeout = New-PSSessionOption -IdleTimeout 172800000
PS> $s = New-PSSession -Computer Server01 -Name ITTask -SessionOption $Timeout
PS> Disconnect-PSSession -Session $s
Disconnect-PSSession : The session ITTask cannot be disconnected because the specified
idle timeout value 172800(seconds) is either greater than the server maximum allowed
43200 (seconds) or less that the minimum allowed60(seconds). Choose an idle time out
value that is within the allowed range and try again.
PS> Invoke-Command -ComputerName Server01 {Get-PSSessionConfiguration Microsoft.PowerShell} |
Format-List -Property *
Architecture : 64
Filename : %windir%\system32\pwrshplugin.dll
ResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
MaxConcurrentCommandsPerShell : 1000
UseSharedProcess : false
ProcessIdleTimeoutSec : 0
xmlns : http://schemas.microsoft.com/wbem/wsman/1/config/PluginConfiguration
MaxConcurrentUsers : 5
lang : en-US
SupportsOptions : true
ExactMatch : true
RunAsUser :
IdleTimeoutms : 7200000
PSVersion : 3.0
OutputBufferingMode : Block
AutoRestart : false
SecurityDescriptorSddl : O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxMemoryPerShellMB : 1024
MaxIdleTimeoutms : 2147483647
Uri : http://schemas.microsoft.com/powershell/microsoft.powershell
SDKVersion : 2
Name : microsoft.powershell
XmlRenderingType : text
Capability : {Shell}
RunAsPassword :
MaxProcessesPerShell : 15
ParentResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
Enabled : true
MaxShells : 25
MaxShellsPerUser : 25
Permission : BUILTIN\Administrators AccessAllowed
PSComputerName : localhost
RunspaceId : aea84310-6dbf-4c21-90ac-13980039925a
PSShowComputerName : True
PS> $s.Runspace.ConnectionInfo
ConnectionUri : http://Server01/wsman
ComputerName : Server01
Scheme : http
Port : 80
AppName : /wsman
Credential :
ShellUri : http://schemas.microsoft.com/powershell/Microsoft.PowerShell
AuthenticationMechanism : Default
CertificateThumbprint :
MaximumConnectionRedirectionCount : 5
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
UseCompression : True
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
NoEncryption : False
UseUTF16 : False
OutputBufferingMode : Drop
IncludePortInSPN : False
Culture : en-US
UICulture : en-US
OpenTimeout : 180000
CancelTimeout : 60000
OperationTimeout : 180000
IdleTimeout : 172800000
PS> Disconnect-PSSession $s -IdleTimeoutSec 43200
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Disconnected Microsoft.PowerShell None
PS> $s.Runspace.ConnectionInfo.IdleTimeout
43200000
最初のコマンドでは、コマンドレットを New-PSSessionOption
使用してセッション オプション オブジェクトを作成します。 IdleTimeout パラメーターを使用して、アイドル タイムアウトを 48 時間 (172800000
ミリ秒) に設定します。 このコマンドは、セッション オプション オブジェクトを変数に $Timeout
保存します。
2 番目のコマンドでは、 New-PSSession
このコマンドレットを使用して Server01 コンピューターにセッションを作成 ITTask
します。 このコマンドは、セッションを変数に $s
保存します。 SessionOption パラメーターの値は、変数内の 48 時間のアイドル タイムアウト$Timeout
です。
3 番目のコマンドは、変数内の ITTask
セッションを $s
切断します。 セッションのアイドル タイムアウト値がセッション構成の MaxIdleTimeoutMs クォータを超えたため、コマンドは失敗します。 アイドル タイムアウトはセッションが切断されるまで使用されないため、セッションの使用中にこの違反が検出されない可能性があります。
4 番目のコマンドでは、 Invoke-Command
このコマンドレットを使用して、 Get-PSSessionConfiguration
Server01 コンピューターでセッション構成のコマンド Microsoft.PowerShell
を実行します。 このコマンドは、コマンドレットをFormat-List
使用して、セッション構成のすべてのプロパティを一覧に表示します。出力は、セッション構成を使用するセッションで許可される最大 IdleTimeout 値を確立する MaxIdleTimeoutMS プロパティがミリ秒 (12 時間) であることを43200000
示しています。
5 番目のコマンドは、変数内のセッションのセッション オプション値を $s
取得します。 多くのセッション オプションの値は、セッションの Runspace プロパティの ConnectionInfo プロパティのプロパティです。出力は、セッションの IdleTimeout プロパティの値が172800000
ミリ秒 (48 時間) であり、セッション構成の MaxIdleTimeoutMs クォータ 12 時間に違反していることを示しています。この競合を解決するには、ConfigurationName パラメーターを使用して別のセッション構成を選択するか、IdleTimeout パラメーターを使用してセッションのアイドル タイムアウトを減らすことができます。
6 番目のコマンドはセッションを切断します。 IdleTimeoutSec パラメーターを使用して、アイドル タイムアウトを 12 時間の最大値に設定します。
7 番目のコマンドは、切断されたセッションの IdleTimeout プロパティの値を取得します。これはミリ秒単位で測定されます。 出力は、コマンドが成功したことを確認します。
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
指定されたセッション ID を持つセッションから切断します。 1 つ以上の ID (コンマで区切って) を入力するか、範囲演算子 (..
) を使用して ID の範囲を指定します。
セッションの ID を取得するには、コマンドレットを Get-PSSession
使用します。 インスタンス ID は、セッションの ID プロパティに格納されます。
Type: | Int32[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-IdleTimeoutSec
切断された PSSession のアイドル タイムアウト値を変更します。 値を秒単位で入力します。 最小値は 60
(1 分) です。
アイドル タイムアウトは、切断された PSSession がリモート コンピューターメイン保持される期間を決定します。 タイムアウトが切れると、 PSSession が削除されます。
切断された PSSession は、切断されたセッションでコマンドが実行されている場合でも、切断された時点からアイドル状態と見なされます。
セッションのアイドル タイムアウトの既定値は、セッション構成の IdleTimeoutMs プロパティの値によって設定されます。 既定値は 7200000
ミリ秒 (2 時間) です。
このパラメーターの値は、基本設定変数の IdleTimeout プロパティ$PSSessionOption
の値と、セッション構成の既定のアイドル タイムアウト値よりも優先されます。 ただし、この値はセッション構成の MaxIdleTimeoutMs プロパティの値を超えることはできません。 MaxIdleTimeoutMs の既定値は 12 時間 (43200000
ミリ秒) です。
Type: | Int32 |
Position: | Named |
Default value: | 60 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
指定されたインスタンス ID を持つセッションから切断します。
インスタンス ID は、ローカル コンピューターまたはリモート コンピューターのセッションを一意に識別する GUID です。 複数のコンピューター上の複数のセッションであっても、インスタンス ID は一意です。
セッションのインスタンス ID を取得するには、コマンドレットを Get-PSSession
使用します。 インスタンス ID は、セッションの InstanceID プロパティに格納されます。
Type: | Guid[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
指定されたフレンドリ名を持つセッションから切断します。 ワイルドカードを使用できます。
セッションのフレンドリ名を取得するには、コマンドレットを Get-PSSession
使用します。 フレンドリ名は、セッションの Name プロパティに格納されます。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-OutputBufferingMode
出力バッファーがいっぱいになったときに切断されたセッションでコマンド出力を管理する方法を決定します。 既定値は Block
です。
切断されたセッションのコマンドで出力が返されたが、出力バッファーがいっぱいになっている場合に、コマンドをセッションの切断中に継続して実行するかどうかは、実質的にこのパラメーターの値によって決定されます。 値を指定 Block
すると、セッションが再接続されるまでコマンドが中断されます。 値を指定 Drop
すると、データが失われる可能性がありますが、コマンドを完了できます。 この値を使用する Drop
場合は、コマンド出力をディスク上のファイルにリダイレクトします。
有効な値は次の通りです。
Block
: 出力バッファーがいっぱいになると、バッファーがクリアされるまで実行が中断されます。Drop
: 出力バッファーがいっぱいになると、実行が続行されます。 新しい出力が保存されると、最も古い出力が破棄されます。None
: 出力バッファリング モードは指定されません。 セッション構成の OutputBufferingMode プロパティの値は、切断されたセッションに使用されます。
Type: | OutputBufferingMode |
Position: | Named |
Default value: | Block |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
指定した PSSession から切断します。 コマンドレットが返すような PSSession オブジェクトをNew-PSSession
入力します。 PSSession オブジェクトをパイプ処理することもできますDisconnect-PSSession
。
コマンドレットはGet-PSSession
、切断された PSSession や他のコンピューター上の他のセッションに接続されている PSSession など、リモート コンピューターで終了するすべての PSSession を取得できます。 Disconnect-PSSession
は、現在のセッションに接続されている PSSession のみを切断します。 他の PSSession をDisconnect-PSSession
パイプ処理すると、コマンドはDisconnect-PSSession
失敗します。
Type: | PSSession[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ThrottleLimit
コマンドのスロットル制限を Disconnect-PSSession
設定します。
スロットルの制限は、このコマンドを実行するために確立できるコンカレント接続の最大値です。 このパラメーターを省略するか、値 0
を入力すると、 32
既定値である 、が使用されます。
スロットル制限は現在のコマンドのみに適用され、セッションまたはコンピューターには適用されません。
Type: | Int32 |
Position: | Named |
Default value: | 32 |
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 |
入力
このコマンドレットにセッションをパイプできます。
出力
このコマンドレットは、切断されたセッションを表すオブジェクトを返します。
メモ
Windows PowerShell には、次のエイリアスが Disconnect-PSSession
含まれています。
dnsn
このコマンドレットは
Disconnect-PSSession
、ローカル コンピューターとリモート コンピューターが PowerShell 3.0 以降を実行している場合にのみ機能します。切断されたセッションでコマンドレットを
Disconnect-PSSession
使用する場合、コマンドはセッションに影響を与えません。エラーは生成されません。対話型セキュリティ トークンを使用して切断されたループバック セッション (EnableNetworkAccess パラメーターを使用して作成されたもの) は、セッションが作成されたコンピューターからのみ再接続できます。 この制約は、悪意のあるアクセスからコンピューターを保護するためのものです。
PSSession を切断すると、セッション状態は
Disconnected
状態になり、可用性は None になります。State プロパティの値は、現在のセッションに対する相対値です。 したがって、値は
Disconnected
PSSession が現在のセッションに接続されていないことを意味します。 ただし、PSSession がすべてのセッションから切断されているわけではありません。 別のセッションに接続されている可能性があるためです。 セッションに接続できるか再接続できるかを確認するには、Availability プロパティを使用します。可用性の値は
None
、セッションに接続できることを示します。 値は、別のBusy
セッションに 接続されているため、PSSession に接続できないことを示します。セッションの State プロパティの値の詳細については、「RunspaceState 列挙型」を参照してください。
セッションの Availability プロパティの値の詳細については、「RunspaceAvailability 列挙型」を参照してください。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示