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>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
コマンドレットは Connect-PSSession
、切断されたユーザー管理 PowerShell セッション (PSSessions) に再接続します。 これは、コマンドレットまたはコマンドレットの InDisconnectedSession パラメーターInvoke-Command
を使用Disconnect-PSSession
するなど、意図的に切断されたセッションと、一時的なネットワーク停止などによって意図せずに切断されたセッションで機能します。
Connect-PSSession
は、同じユーザーによって開始された切断されたセッションに接続できます。 これには、他のコンピューター上の他のセッションによって開始された、または他のセッションから切断されたものが含まれます。
ただし、 Connect-PSSession
コマンドレットを使用して、壊れたセッションまたは閉じたセッション、または対話型セッションに Enter-PSSession
接続することはできません。 このほか、別のユーザーが開始したセッションには接続できません。ただし、そのセッションを作成したユーザーの資格情報がある場合には、このコマンドレットを使用した再接続が可能です。
切断されたセッションの機能の詳細については、「about_Remote_Disconnected_Sessions」を参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1: セッションに再接続する
Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Opened ITTasks Available
このコマンドは、 ITTask
Server01 コンピューター上のセッションに再接続します。
出力は、コマンドが成功したことを示しています。 セッションの 状態 は で Opened
、 可用性 は Available
です。これは、セッションでコマンドを実行できることを示します。
例 2: 切断と再接続の影響
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
Get-PSSession | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Disconnected Microsoft.PowerShell None
Get-PSSession | Connect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
この例では、セッションを切断した後で、改めて同じセッションに接続する効果を示しています。
最初のコマンドでは、 コマンドレットを Get-PSSession
使用します。 ComputerName パラメーターを指定しなかった場合には、コマンドは現在のセッションで作成されたセッションのみを取得します。
出力は、コマンドがローカル コンピューター上のセッションを Backups
取得することを示しています。 セッションの 状態 は で Opened
、 可用性 は です Available
。
2 番目のコマンドでは、 コマンドレットを Get-PSSession
使用して、現在のセッションで作成された PSSession オブジェクトを取得し、コマンドレットを Disconnect-PSSession
使用してセッションを切断します。 出力は、セッションが Backups
切断されたことを示しています。 セッションの 状態 は で Disconnected
、 可用性 は です None
。
3 番目のコマンドでは、 コマンドレットを Get-PSSession
使用して、現在のセッションで作成された PSSession オブジェクトを取得し、コマンドレットを Connect-PSSession
使用してセッションを再接続します。 出力は、セッションが Backups
再接続されたことを示しています。 セッションの 状態 は で Opened
、 可用性 は です Available
。
切断されていないセッションで コマンドレットを Connect-PSSession
使用した場合、コマンドはセッションに影響せず、エラーも生成されません。
例 3: エンタープライズ シナリオでの一連のコマンド
この一連のコマンドは、エンタープライズ シナリオでのコマンドレットの使用方法を示しています Connect-PSSession
。 この例では、システム管理者がリモート コンピューター上のセッションで、実行時間の長いジョブを開始します。 管理者はジョブを開始した後、セッションを切断し、帰宅します。
その夜、管理者は自宅のコンピューターにログオンし、ジョブが完了するまで実行されたことを確認します。
管理者は、まずリモート コンピューターでセッションを作成し、セッションでスクリプトを実行します。最初のコマンドでは、 コマンドレットを New-PSSession
使用して、 ITTask
Server01 リモート コンピューターでセッションを作成します。 コマンドでは、 ConfigurationName パラメーターを使用してセッション構成を指定します ITTasks
。 コマンドは、セッションを 変数に $s
保存します。
変数内のセッションでバックグラウンド ジョブを開始する 2 番目の$s
コマンド Invoke-Command
コマンドレット。 このコマンドでは、FilePath パラメーターを使用してバックグラウンド ジョブのスクリプトを実行します。
3 番目のコマンドでは、 コマンドレットを Disconnect-PSSession
使用して、 変数内の $s
セッションから切断します。 コマンドは、 OutputBufferingMode パラメーターを 値が の Drop
状態で使用して、セッションに出力を配信する必要があるため、スクリプトがブロックされないようにします。 IdleTimeoutSec パラメーターを使用して、セッションのタイムアウトを 15 時間に延長します。 コマンドが完了すると、管理者はコンピューターをロックし、夕方に家に帰ります。
その夜の後半に、管理者は自宅のコンピューターを起動し、企業ネットワークにログオンし、PowerShell を起動します。 4 番目のコマンドでは、 コマンドレットを Get-PSSession
使用して Server01 コンピューター上のセッションを取得します。 コマンドはセッションを ITTask
検索します。 5 番目のコマンドでは、 コマンドレットを Connect-PSSession
使用してセッションに ITTask
接続します。 このコマンドでは、セッションが $s
変数に保存されます。
6 番目のコマンドでは、 コマンドレットを Invoke-Command
使用して、 Get-Job
変数のセッションでコマンドを $s
実行します。 出力は、ジョブが正常に完了したことを示しています。7 番目のコマンドでは、 コマンドレットをInvoke-Command
Receive-Job
使用して、セッション内の 変数内のセッションで$s
コマンドを実行します。 コマンドは、結果を変数に $BackupSpecs
保存します。8 番目のコマンドでは、 コマンドレットを Invoke-Command
使用してセッションで別のスクリプトを実行します。 コマンドは、スクリプトへの入力としてセッション内の変数の値 $BackupSpecs
を使用します。
$s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
Invoke-Command -Session $s -ScriptBlock {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Running True Server01 \\Server30\Scripts\Backup...
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
Get-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
$s = Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
Invoke-Command -Session $s -ScriptBlock {Get-Job}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Completed True Server01 \\Server30\Scripts\Backup...
Invoke-Command -Session $s -ScriptBlock {$BackupSpecs = Receive-Job -JobName Job2}
Invoke-Command -Session $s -ScriptBlock {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
9 番目のコマンドは、 変数内 $s
のセッションから切断されます。 管理者は PowerShell を閉じ、コンピューターを閉じます。 次の日、セッションに再接続すると、会社用コンピューターからスクリプトの状態を確認できます。
パラメーター
-AllowRedirection
このコマンドレットで、この接続を代替 URI にリダイレクトすることを許可することを示します。
ConnectionURI パラメーターを使用すると、リモートの送信先は別の URI にリダイレクトするように指示を返すことができます。 既定では、PowerShell は接続をリダイレクトしませんが、このパラメーターを使用して接続のリダイレクトを許可できます。
また、MaximumConnectionRedirectionCount セッション オプション値を変更することで、接続をリダイレクトする回数を制限することもできます。 コマンドレットの MaximumRedirection パラメーターをNew-PSSessionOption
使用するか、$PSSessionOption基本設定変数の MaximumConnectionRedirectionCount プロパティを設定します。 既定値は 5
です。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationName
アプリケーションの名前を指定します。 このコマンドレットは、指定したアプリケーションを使用するセッションにのみ接続します。
接続 URI のアプリケーション名セグメントを入力します。 たとえば、次の接続 URI では、アプリケーション名は WSMan: http://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
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
既定値は Default
です。
このパラメーターの値の詳細については、「 AuthenticationMechanism 列挙」を参照してください。
注意事項
ユーザーの資格情報が認証対象のリモート コンピューターに渡される Credential Security Support Provider (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) を指定します。 証明書の拇印を入力します。
証明書は、クライアント証明書ベースの認証で使用されます。 ローカル ユーザー アカウントにのみマップできます。 ドメイン アカウントでは機能しません。
証明書の拇印を取得するには、PowerShell Cert:
ドライブで または Get-ChildItem
コマンドを使用Get-Item
します。
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 が先頭に付加されます。 http://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>
既定値は、次のとおりです。
http://localhost:5985/WSMAN
接続 URI を指定しない場合は、 UseSSL パラメーターと Port パラメーターを使用して接続 URI の値を指定できます。
URI の Transport セグメントの有効な値は、HTTP および HTTPS です。 トランスポート セグメントを使用して接続 URI を指定し、ポートを指定しない場合、セッションは標準ポート (HTTP 用と 443
HTTPS 用) 80
で作成されます。 PowerShell リモート処理に既定のポートを使用するには、HTTP または 5986
HTTPS のポート5985
を指定します。
宛先コンピューターが接続を別の URI にリダイレクトする場合、コマンドで AllowRedirection パラメーターを使用しない限り、PowerShell はリダイレクトを防止します。
Type: | Uri[] |
Aliases: | URI, CU |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
切断されたセッションに接続するためのアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
や Domain01\User01
などのUser01
ユーザー名を入力するか、 コマンドレットによって生成された PSCredential オブジェクトをGet-Credential
入力します。 ユーザー名を入力すると、パスワードの入力を求められます。
資格情報は PSCredential オブジェクトに 格納され、パスワードは SecureString として格納されます。
注意
SecureString データ保護の詳細については、「SecureString のセキュリティ保護方法」を参照してください。
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
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
セッションに再接続するときに使用するリモート コンピューターのネットワーク ポートを指定します。 リモート コンピューターに接続するには、リモート コンピューターで、接続に使用されるポートをリッスンすることが必要です。 既定のポートは です 5985
。これは HTTP の WinRM ポートであり 5986
、HTTPS の WinRM ポートです。
代替ポートを使用する前に、そのポートでリッスンするようにリモート コンピューター上の WinRM リスナーを構成する必要があります。 リスナーを構成するには、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 オブジェクトや、キーがセッション オプション名で値がセッション オプション値であるハッシュ テーブルを入力します。
オプションの既定値は、設定されている場合は、基本設定変数の $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
このコマンドレットが Secure Sockets Layer (SSL) プロトコルを使用して切断されたセッションに接続することを示します。 既定では、SSL は使用されません。
WS-Management は、ネットワーク経由で送信されるすべての 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) をこのコマンドレットにパイプできます。
出力
このコマンドレットは、再接続先のセッションを表す オブジェクトを返します。
メモ
PowerShell には、 の次のエイリアスが Connect-PSSession
含まれています。
Windows の場合:
cnsn
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Connect-PSSession
は、切断されているセッション 、つまり State プロパティの値が Disconnected のセッションにのみ再接続されます。 3.0 以降のバージョンWindows PowerShell実行されているコンピューターに接続されている、または終了するセッションのみを切断して再接続できます。切断されていないセッションで を使用
Connect-PSSession
する場合、コマンドはセッションに影響せず、エラーは生成されません。EnableNetworkAccess パラメーターを使用して作成された対話型トークンを使用して切断されたループバック セッションは、セッションが作成されたコンピューターからのみ再接続できます。 この制約は、悪意のあるアクセスからコンピューターを保護するためのものです。
PSSession の State プロパティの値は、現在のセッションに対して相対的です。 したがって、 Disconnected の値は、 PSSession が現在のセッションに接続されていないことを意味します。 ただし、 PSSession がすべてのセッションから切断されているわけではありません。 別のセッションに接続されている可能性があるためです。 セッションに接続または再接続できるかどうかを確認するには、Availability プロパティを使用します。
Availability の値が None の場合は、セッションに接続できることを示します。 [ビジー] の値は、 PSSession が別のセッションに接続されているため、接続できないことを示します。
セッションの State プロパティの値の詳細については、「 RunspaceState 列挙」を参照してください。
セッションの Availability プロパティの値の詳細については、「 RunspaceAvailability 列挙」を参照してください。
PSSession に接続するときに、PSSession のアイドル タイムアウト値を変更することはできません。 の
Connect-PSSession
SessionOption パラメーターは、IdleTimeout 値を持つ SessionOption オブジェクトを受け取ります。 ただし、PSSession に接続する場合、SessionOption オブジェクトの IdleTimeout 値と変数の$PSSessionOption
IdleTimeout 値は無視されます。PSSession の作成時、または
Invoke-Command
コマンドレット、および PSSession からの切断時に、New-PSSession
PSSession のアイドルタイムアウトを設定および変更できます。PSSession の IdleTimeout プロパティは、切断されたセッションがリモート コンピューターで維持される期間を決定するため、切断されたセッションにとって重要です。 セッションが切断されると、その時点からアイドル状態であると判断されます。これは、そのセッションでコマンドを実行している場合であっても同じです。