Connect-PSSession
切断されたセッションに再接続します。
構文
Connect-PSSession
-Name <String[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-Session] <PSSession[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-ComputerName <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-ComputerName <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-InstanceId <Guid[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Connect-PSSession コマンドレットは、切断されたユーザーマネージド Windows PowerShell セッション (PSSessions) に再接続します。 これは、Invoke-Command コマンドレットの Disconnect-PSSession コマンドレットまたは InDisconnectedSession パラメーターを使用するなど、意図的に切断されたセッションと、一時的なネットワーク障害などによって意図せずに切断されたセッションで動作します。
Connect-PSSession は、同じユーザーによって開始された切断されたセッションに接続できます。 これには、他のコンピューターで開始されたセッションや他のセッションから切断されたものが含まれます。
ただし、 Connect-PSSession は、Enter-PSSession コマンドレットを使用して開始された、壊れたセッションまたは閉じたセッション、または対話型セッションに接続できません。 このほか、別のユーザーが開始したセッションには接続できません。ただし、そのセッションを作成したユーザーの資格情報がある場合には、このコマンドレットを使用した再接続が可能です。
切断されたセッションの機能の詳細については、「about_Remote_Disconnected_Sessions」を参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1: セッションに再接続する
PS C:\> Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Opened ITTasks Available
このコマンドは、Server01 コンピューターの ITTask セッションに再接続するものです。
出力は、コマンドが成功したことを示しています。 セッションの 状態 は [開いている] で、[ 可用性 ] は [使用可能] です。これは、セッションでコマンドを実行できることを示します。
例 2: 切断と再接続の影響
PS C:\> Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
PS C:\> Get-PSSession | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Disconnected Microsoft.PowerShell None
PS C:\> Get-PSSession | Connect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
この例では、セッションを切断した後で、改めて同じセッションに接続する効果を示しています。
最初のコマンドでは、Get-PSSession コマンドレットを使用します。 ComputerName パラメーターを指定しなかった場合には、コマンドは現在のセッションで作成されたセッションのみを取得します。
出力は、ローカル コンピューターの Backups セッションを取得したことを示しています。 セッションの 状態 が [開いている] で、[ 可用性 ] が [利用可能] になっています。
2 番目のコマンドでは 、Get-PSSession コマンドレットを使用して、現在のセッションで作成された PSSession オブジェクトを取得し、 Disconnect-PSSession コマンドレットを使用してセッションを切断します。 出力は、Backups セッションが切断されたことを示しています。 セッションの 状態 は切断され、 可用性 は None です。
3 番目のコマンドでは 、Get-PSSession コマンドレットを使用して、現在のセッションで作成された PSSession オブジェクトを取得し、 Connect-PSSession コマンドレットを使用してセッションを再接続します。 出力は、Backups セッションに再接続したことを示しています。 セッションの 状態 が [開いている] で、[ 可用性 ] が [利用可能] になっています。
切断されていないセッションで Connect-PSSession コマンドレットを使用する場合、コマンドはセッションに影響を与えず、エラーも生成しません。
例 3: エンタープライズ シナリオでの一連のコマンド
The administrator starts by creating a sessions on a remote computer and running a script in the session.The first command uses the **New-PSSession** cmdlet to create the ITTask session on the Server01 remote computer. The command uses the *ConfigurationName* parameter to specify the ITTasks session configuration. The command saves the sessions in the $s variable.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
The second command **Invoke-Command** cmdlet to start a background job in the session in the $s variable. It uses the *FilePath* parameter to run the script in the background job.
PS C:\> Invoke-Command -Session $s {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Running True Server01 \\Server30\Scripts\Backup...
The third command uses the Disconnect-PSSession cmdlet to disconnect from the session in the $s variable. The command uses the *OutputBufferingMode* parameter with a value of Drop to prevent the script from being blocked by having to deliver output to the session. It uses the *IdleTimeoutSec* parameter to extend the session time-out to 15 hours.When the command is completed, the administrator locks her computer and goes home for the evening.
PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
Later that evening, the administrator starts her home computer, logs on to the corporate network, and starts Windows PowerShell. The fourth command uses the Get-PSSession cmdlet to get the sessions on the Server01 computer. The command finds the ITTask session.The fifth command uses the **Connect-PSSession** cmdlet to connect to the ITTask session. The command saves the session in the $s variable.
PS C:\> Get-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
PS C:\> $s = Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
The sixth command uses the **Invoke-Command** cmdlet to run a Get-Job command in the session in the $s variable. The output shows that the job finished successfully.The seventh command uses the **Invoke-Command** cmdlet to run a Receive-Job command in the session in the $s variable in the session. The command saves the results in the $BackupSpecs variable.The eighth command uses the **Invoke-Command** cmdlet to runs another script in the session. The command uses the value of the $BackupSpecs variable in the session as input to the script.
PS C:\> Invoke-Command -Session $s {Get-Job}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Completed True Server01 \\Server30\Scripts\Backup...
PS C:\> Invoke-Command -Session $s {$BackupSpecs = Receive-Job -JobName Job2}
PS C:\> Invoke-Command -Session $s {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}
The ninth command disconnects from the session in the $s variable.The administrator closes Windows PowerShell and closes the computer. She can reconnect to the session on the next day and check the script status from her work computer.
PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
この一連のコマンドは、エンタープライズで Connect-PSSession コマンドレットを使用する方法の一例を示したものです。 この例では、システム管理者がリモート コンピューター上のセッションで、実行時間の長いジョブを開始します。 管理者はジョブを開始した後、セッションを切断し、帰宅します。 その夜、管理者はホーム コンピューターにログオンし、ジョブが完了するまで実行されたことを確認します。
パラメーター
-AllowRedirection
このコマンドレットで、この接続を代替 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 です。
このパラメーターの値の詳細については、MSDN ライブラリの 「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: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
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 を指定しない場合は、 UseSSL パラメーターと Port パラメーターを使用して接続 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: | None |
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 は、PSSession の InstanceID プロパティに格納されます。
Type: | Guid[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
切断されたセッションのフレンドリ名を指定します。
Type: | String[] |
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 |
-ThrottleLimit
このコマンドを実行するために確立できる最大コンカレント接続数を指定します。 このパラメーターを省略した場合、または値 0 を入力した場合は、既定値の 32 が使用されます。
スロットル制限は現在のコマンドのみに適用され、セッションまたはコンピューターには適用されません。
Type: | Int32 |
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) をこのコマンドレットにパイプできます。
出力
このコマンドレットは、再接続先のセッションを表す オブジェクトを返します。
メモ
Connect-PSSession は、切断されたセッション、つまり State プロパティの値が Disconnected のセッションにのみ再接続します。 Windows PowerShell 3.0 以降のバージョンを実行しているコンピューターに接続されている、または終了するセッションのみを切断して再接続できます。
切断されていないセッションで Connect-PSSession を使用する場合、コマンドはセッションに影響を与えず、エラーも生成しません。
EnableNetworkAccess パラメーターを使用して作成された対話型トークンを使用して切断されたループバック セッションは、セッションが作成されたコンピューターからのみ再接続できます。 この制約は、悪意のあるアクセスからコンピューターを保護するためのものです。
PSSession の State プロパティの値は、現在のセッションを基準にしています。 したがって、 Disconnected の値は 、PSSession が現在のセッションに接続されていないことを意味します。 ただし、 PSSession がすべてのセッションから切断されているわけではありません。 別のセッションに接続されている可能性があるためです。 セッションに接続または再接続できるかどうかを確認するには、Availability プロパティを使用します。
Availability の値が None の場合は、セッションに接続できることを示します。 [ビジー] の値は、 PSSession が別のセッションに接続されているため、接続できないことを示します。
セッションの State プロパティの値の詳細については、MSDN ライブラリの 「RunspaceState 列挙」 を参照してください。
セッションの Availability プロパティの値の詳細については、MSDN ライブラリの 「RunspaceAvailability 列挙 」を参照してください。
PSSession に接続するときに、PSSession のアイドル タイムアウト値を変更することはできません。 Connect-PSSession の SessionOption パラメーターは、IdleTimeout の値が設定されている SessionOption オブジェクトを受け取ります。 ただし、PSSession に接続する場合、SessionOption オブジェクトの IdleTimeout 値と$PSSessionOption変数の IdleTimeout 値は無視されます。
PSSession の作成時、New-PSSession コマンドレットまたは Invoke-Command コマンドレットを使用して、PSSession から切断するときに、PSSession のアイドルタイムアウトを設定および変更できます。
PSSession の IdleTimeout プロパティは、切断されたセッションがリモート コンピューターで維持される時間を決定するため、切断されたセッションにとって重要です。 セッションが切断されると、その時点からアイドル状態であると判断されます。これは、そのセッションでコマンドを実行している場合であっても同じです。
関連リンク
- Disconnect-PSSession
- Enter-PSSession
- Exit-PSSession
- Get-PSSession
- Get-PSSessionConfiguration
- New-PSSession
- New-PSSessionOption
- New-PSSessionOption
- Receive-PSSession
- Register-PSSessionConfiguration
- Remove-PSSession
- about_PSSessions
- about_Remote に関するページ
- about_Remote_Disconnected_Sessions
- about_Session_Configurations