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), которые были отключены. Он работает с сеансами, которые отключены намеренно, например с помощью Disconnect-PSSession
командлета или параметра InDisconnectedSession командлета Invoke-Command
, а также в сеансах, которые были отключены непреднамеренно, например из-за временного сбоя сети.
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
.
Вторая команда использует Get-PSSession
командлет для получения объектов PSSession, созданных в текущем сеансе, и командлет для Disconnect-PSSession
отключения сеансов. В выходных данных показано, что Backups
сеанс был отключен. Состояние сеанса — , Disconnected
а доступность — None
.
Третья команда использует Get-PSSession
командлет для получения объектов PSSession, созданных в текущем сеансе, и командлет для Connect-PSSession
повторного подключения сеансов. В выходных данных показано, что Backups
сеанс был повторно подключен. Состояние сеанса — , Opened
а доступность — Available
.
Если вы используете Connect-PSSession
командлет в сеансе, который не отключен, команда не влияет на сеанс и не приводит к возникновению ошибок.
Пример 3. Ряд команд в корпоративном сценарии
В этой серии команд показано, как Connect-PSSession
командлет может использоваться в корпоративном сценарии. В этом случае системный администратор запускает длительное задание в сеансе на удаленном компьютере. После запуска задания администратор отключается от сеанса и отправляется домой.
Позже в тот же вечер администратор входит в систему на своем домашнем компьютере и проверяет, запущено ли задание, пока оно не будет завершено.
Администратор начинает с создания сеансов на удаленном компьютере и запуска скрипта в сеансе. Первая команда использует New-PSSession
командлет для создания сеанса ITTask
на удаленном компьютере Server01. Команда использует параметр ConfigurationName для указания конфигурации сеанса ITTasks
. Команда сохраняет сеансы в переменной $s
.
Второй командлет для Invoke-Command
запуска фонового задания в сеансе в переменной $s
. Параметр FilePath применяется для выполнения скрипта в фоновом задании.
Третья команда использует Disconnect-PSSession
командлет для отключения от сеанса в переменной $s
. Команда использует параметр OutputBufferingMode со значением Drop
, чтобы предотвратить блокировку скрипта из-за необходимости доставки выходных данных в сеанс. Он использует параметр IdleTimeoutSec , чтобы продлить время ожидания сеанса до 15 часов. Когда команда будет выполнена, администратор заблокирует компьютер и отправляется домой на вечер.
В тот же вечер администратор запускает свой домашний компьютер, входит в корпоративную сеть и запускает PowerShell. Четвертая команда использует Get-PSSession
командлет для получения сеансов на компьютере Server01. Команда находит ITTask
сеанс. Пятая команда использует Connect-PSSession
командлет для подключения к сеансу ITTask
. Сеанс сохраняется в переменную $s
.
Шестая команда использует Invoke-Command
командлет для выполнения Get-Job
команды в сеансе в переменной $s
. В выходных данных показано, что задание успешно завершено. Седьмая команда использует Invoke-Command
командлет для выполнения Receive-Job
команды в сеансе в переменной $s
сеанса. Команда сохраняет результаты в переменной $BackupSpecs
. Восьмая команда использует 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
Девятая команда отключается от сеанса в переменной $s
. Администратор закрывает PowerShell и закрывает компьютер. Она может подключиться к сеансу на следующий день и проверить состояние скрипта на рабочем компьютере.
Параметры
-AllowRedirection
Указывает, что этот командлет разрешает перенаправление этого подключения на альтернативный универсальный код ресурса (URI).
При использовании параметра ConnectionURI удаленный компьютер может вернуть инструкцию для перенаправления на другой URI. По умолчанию PowerShell не перенаправляет подключения, но вы можете использовать этот параметр, чтобы разрешить ему перенаправлять подключение.
Можно также ограничить количество перенаправлений соединение, изменив значение параметра сеанса MaximumConnectionRedirectionCount. Используйте параметр MaximumRedirection командлета New-PSSessionOption
или задайте свойство MaximumConnectionRedirectionCount переменной предпочтения $PSSessionOption . Значение по умолчанию — 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.
Внимание!
Аутентификация 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) учетной записи пользователя, который располагает разрешением для подключения к отсоединенному сеансу. Введите отпечаток сертификата.
Сертификаты используются при проверке подлинности на основе сертификата клиента. Их можно сопоставить только с локальными учетными записями пользователей. Они не работают с учетными записями домена.
Чтобы получить отпечаток сертификата, используйте Get-Item
команду или Get-ChildItem
на диске PowerShell Cert:
.
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 подключения.
Допустимые значения для сегмента Transport идентификатора URI: HTTP и HTTPS. Если указать URI подключения с сегментом транспорта, но не указать порт, сеанс создается со стандартными портами: 80
для HTTP и 443
ДЛЯ HTTPS. Чтобы использовать порты по умолчанию для удаленного взаимодействия PowerShell, укажите порт 5985
для HTTP или 5986
HTTPS.
Если конечный компьютер перенаправляет подключение по другому универсальному коду ресурса (URI), PowerShell запрещает перенаправление, если в команде не используется параметр AllowRedirection .
Type: | Uri[] |
Aliases: | URI, CU |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
Указывает учетную запись пользователя с разрешением на подключение к отсоединенному сеансу. По умолчанию используется текущий пользователь.
Введите имя пользователя, например User01
или Domain01\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 работает только в том случае, если отключенный сеанс был ранее подключен к текущему сеансу.
Этот параметр допустим, но не имеет силы, если сеанс хранится на локальном компьютере, но не был подключен к текущему сеансу.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Указывает идентификаторы экземпляров отключенных сеансов.
Идентификатор экземпляра — это GUID, который однозначно идентифицирует PSSession на локальном или удаленном компьютере.
Идентификатор экземпляра хранится в свойстве InstanceIDPSSession.
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
, который является портом WinRM для HTTP, и 5986
, который является портом WinRM для HTTPS.
Прежде чем использовать альтернативный порт, необходимо настроить прослушиватель WinRM на удаленном компьютере для прослушивания по этому порту. Чтобы настроить прослушиватель, введите в командной строке PowerShell следующие две команды:
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
Задает дополнительные параметры для сеанса. Введите объект SessionOption , например создаваемый с помощью New-PSSessionOption
командлета, или хэш-таблицу, в которой ключи являются именами параметров сеанса, а значения — значениями параметров сеанса.
Значения по умолчанию для параметров определяются значением переменной $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 для подключения к отключенным сеансам. По умолчанию SSL не используется.
WS-Management шифрует все содержимое PowerShell, передаваемое по сети. Параметр UseSSL — это дополнительная защита, которая отправляет данные через HTTPS-подключение, а не через HTTP-подключение.
Если вы используете этот параметр, но 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
повторно подключается только к сеансам, которые отключены, то есть к сеансам со значением Disconnected для свойства State . Отключить и повторно подключить можно только сеансы, подключенные к компьютерам под управлением Windows PowerShell 3.0 или более поздних версий или завершающиеся на них.Если вы используете
Connect-PSSession
в сеансе, который не отключен, команда не влияет на сеанс и не приводит к ошибкам.Отключенные сеансы замыкания на себя с интерактивными маркерами, созданные с помощью параметра EnableNetworkAccess , можно повторно подключить только с компьютера, на котором был создан сеанс. Это ограничение защищает компьютер от вредоносного доступа.
Значение свойства StatepsSession относится к текущему сеансу. Таким образом, значение Disconnected означает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключен от всех сеансов. Он может быть подключен к другому сеансу. Определить возможность подключения или повторного подключения к сеансу позволяет свойство Availability.
Если свойство Availability имеет значение None, подключиться к сеансу можно. Значение Busy указывает, что вы не можете подключиться к PSSession , так как оно подключено к другому сеансу.
Дополнительные сведения о значениях свойства State сеансов см. в разделе Перечисление RunspaceState.
Дополнительные сведения о значениях свойства Availability сеансов см. в разделе Перечисление RunspaceAvailability.
При подключении к PSSession нельзя изменить значение времени ожидания бездействия. Параметр
Connect-PSSession
SessionOption объекта принимает объект SessionOption со значением IdleTimeout. Однако значение IdleTimeout объекта SessionOption и значение IdleTimeout переменной$PSSessionOption
игнорируются при подключении к PSSession.Вы можете задать и изменить время ожидания для PSSession при создании psSession, с помощью
New-PSSession
командлетов илиInvoke-Command
и при отключении от PSSession.Свойство IdleTimeoutpsSession имеет решающее значение для отключенных сеансов, так как оно определяет продолжительность обслуживания отключенного сеанса на удаленном компьютере. Отключенные сеансы считаются находящимися в режиме простоя с момента их отключения, даже если в них выполняются команды.