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>]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-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
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-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
-InstanceId <Guid[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Connect-PSSession
повторно подключается к сеансам PowerShell, управляемым пользователем (PSSessions), которые были отключены. Он работает на сеансах, которые намеренно отключены, например с помощью Disconnect-PSSession
командлета или параметра Invoke-Command
InDisconnectedSession командлета, и тех, которые были отключены непреднамеренно, например временным сбоем сети.
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
.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ApplicationName
Указывает имя приложения. Этот командлет подключается только к сеансам, используюющим указанное приложение.
Введите сегмент имени приложения URI подключения. Например, в следующем URI подключения имя приложения — WSMan: http://localhost:5985/WSMAN
Имя приложения сеанса хранится в свойстве Runspace.ConnectionInfo.AppName сеанса.
Значение этого параметра используется для выбора и фильтрации сеансов. Оно не изменяет приложение, которое использует сеанс.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Authentication
Указывает механизм, используемый для проверки подлинности учетных данных пользователя в команде для повторного подключения к отключенном сеансу. Допустимые значения для этого параметра:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
Значение по умолчанию — Default
.
Дополнительные сведения о значениях этого параметра см. в разделе "Перечисление AuthenticationMechanism".
Внимание
Проверка подлинности поставщика поддержки безопасности учетных данных (CredSSP), при которой учетные данные пользователя передаются на удаленный компьютер, который будет проходить проверку подлинности, предназначен для команд, требующих проверки подлинности на нескольких ресурсах, таких как доступ к удаленному сетевому ресурсу. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, могут использоваться для управления сетевым сеансом.
Тип: | AuthenticationMechanism |
Допустимые значения: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CertificateThumbprint
Задает цифровой сертификат с открытым ключом (X509) учетной записи пользователя, который располагает разрешением для подключения к отсоединенному сеансу. Введите отпечаток сертификата.
Сертификаты используются при проверке подлинности на основе сертификата клиента. Их можно сопоставить только с локальными учетными записями пользователей. Они не работают с учетными записями домена.
Чтобы получить отпечаток сертификата, используйте команду Get-Item
Get-ChildItem
или команду на диске PowerShell Cert:
.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ComputerName
Указывает компьютеры, на которых хранятся отключенные сеансы. Сеансы хранятся на компьютере, который находится на стороне сервера или в конце соединения. По умолчанию используется локальный компьютер.
Введите имя NetBIOS, IP-адрес или полное доменное имя компьютера. Подстановочные знаки не допускаются. Чтобы указать локальный компьютер, введите имя localhost
компьютера или точку (.
)
Тип: | String[] |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ConfigurationName
Подключается только к сеансам, использующим указанную конфигурацию сеанса.
Введите имя конфигурации или полное имя ресурса (URI) для конфигурации сеанса. Если указать только имя конфигурации, предопределен следующий универсальный код ресурса (URI) схемы: http://schemas.microsoft.com/powershell
Имя конфигурации сеанса хранится в свойстве ConfigurationName сеанса.
Значение этого параметра используется для выбора и фильтрации сеансов. Оно не изменяет конфигурацию, которую использует сеанс.
Дополнительные сведения о конфигурациях сеансов см. в разделе about_Session_Configurations.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ConnectionUri
Задает URI конечных точек подключения для отключенных сеансов.
Значение URI должно быть указано полностью. Строка имеет следующий формат:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Значение по умолчанию определяется следующим образом.
http://localhost:5985/WSMAN
Если URI подключения не указан, можно использовать параметры UseSSL и Port для указания значений URI подключения.
Допустимые значения для сегмента транспорта URI: HTTP и HTTPS. Если указать универсальный код ресурса (URI) подключения с сегментом транспорта, но не указать порт, сеанс создается с помощью портов стандартов: 80
для HTTP и 443
HTTPS. Чтобы использовать порты по умолчанию для удаленного взаимодействия PowerShell, укажите порт 5985
для HTTP или 5986
HTTPS.
Если целевой компьютер перенаправляет подключение к другому URI, PowerShell запрещает перенаправление, если в команде не используется параметр AllowRedirection .
Тип: | Uri[] |
Aliases: | URI, CU |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Credential
Указывает учетную запись пользователя с разрешением на подключение к отсоединенному сеансу. По умолчанию используется текущий пользователь.
Введите имя пользователя, например User01
или Domain01\User01
или введите объект PSCredential , созданный командлетом Get-Credential
. Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential , а пароль хранится как SecureString.
Примечание.
Дополнительные сведения о защите данных SecureString см. в разделе "Как безопасна Защита SecureString?".
Тип: | PSCredential |
Position: | Named |
Default value: | Current user |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Id
Указывает идентификаторы отключенных сеансов. Параметр id работает только в том случае, если ранее отключенный сеанс был подключен к текущему сеансу.
Этот параметр допустим, но не имеет силы, если сеанс хранится на локальном компьютере, но не был подключен к текущему сеансу.
Тип: | Int32[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-InstanceId
Указывает идентификаторы экземпляров отключенных сеансов.
Идентификатор экземпляра — это GUID, который однозначно идентифицирует PSSession на локальном или удаленном компьютере.
Идентификатор экземпляра хранится в свойстве InstanceID для PSSession.
Тип: | Guid[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Name
Указывает понятные имена отключенных сеансов.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | 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 без крайней необходимости. Порт, который задается в команде, применяется ко всем компьютерам или сеансам, в которых выполняется команда. Альтернативный порт может помешать выполнению команды на всех компьютерах.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Session
Указывает отключенные сеансы. Введите переменную, содержащую объекты PSSession или команду, которая создает или получает объекты PSSession, например Get-PSSession
команду.
Тип: | PSSession[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SessionOption
Задает дополнительные параметры сеанса. Введите объект SessionOption, например создаваемый с помощью командлетаNew-PSSessionOption
, или хэш-таблицу, в которой ключи являются именами параметров сеанса, а значения — значениями параметра сеанса.
Значения по умолчанию для параметров определяются значением переменной $PSSessionOption
предпочтения, если она задана. В противном случае значения по умолчанию задаются параметрами, указанными в конфигурации сеанса.
Значения параметра сеанса имеют приоритет над значениями по умолчанию для сеансов, заданных в переменной $PSSessionOption
предпочтения и в конфигурации сеанса. Однако они не имеют приоритет над максимальными значениями, квотами и ограничениями, заданными в конфигурации сеанса.
Описание параметров сеанса, включающих значения по умолчанию, см. в разделе New-PSSessionOption
. Сведения о переменной предпочтения $PSSessionOption см. в about_Preference_Variables. Дополнительные сведения о конфигурациях сеансов см. в разделе about_Session_Configurations.
Тип: | PSSessionOption |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ThrottleLimit
Указывает максимальное число одновременных подключений, которые можно установить для запуска этой команды.
Если этот параметр опущен или введите значение 0
по умолчанию, 32
используется.
Предел регулирования применяется только к текущему командлету, а не к сеансу или компьютеру.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseSSL
Указывает, что этот командлет использует протокол SSL для подключения к отключенным сеансам. По умолчанию SSL не используется.
WS-Management шифрует все содержимое PowerShell, передаваемое по сети. Параметр UseSSL — это дополнительная защита, которая отправляет данные через HTTPS-подключение вместо HTTP-подключения.
Если вы используете этот параметр, но SSL недоступен на порту, который используется для команды, команда завершается ошибкой.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать сеанс (PSSession) в этот командлет.
Выходные данные
Этот командлет возвращает объект, представляющий сеанс, к которому он повторно подключен.
Примечания
Windows PowerShell включает следующие псевдонимы для Connect-PSSession
:
cnsn
Этот командлет доступен только на платформах Windows.
Connect-PSSession
повторно подключается только к сеансам, которые отключены, то есть сеансы, имеющие значение "Отсоединяемый" для свойства State . Можно отключить и повторно подключить только сеансы, подключенные к компьютерам под управлением Windows PowerShell 3.0 или более поздних версий.Если вы используете
Connect-PSSession
сеанс, который не отключен, команда не влияет на сеанс и не создает ошибок.Отключенные сеансы обратного цикла с интерактивными токенами, созданными с помощью параметра EnableNetworkAccess , можно повторно подключить только с компьютера, на котором был создан сеанс. Это ограничение защищает компьютер от вредоносного доступа.
Значение свойства State psSession относительно текущего сеанса. Таким образом, значение "Отключено " означает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключен от всех сеансов. Он может быть подключен к другому сеансу. Чтобы определить, можно ли подключить или повторно подключиться к сеансу , используйте свойство Availability .
Значение доступности None указывает, что вы можете подключиться к сеансу. Значение "Занято" указывает, что вы не можете подключиться к PSSession , так как он подключен к другому сеансу.
Дополнительные сведения о значениях свойства State сеансов см. в разделе "Перечисление RunspaceState".
Дополнительные сведения о значениях свойства доступности сеансов см. в разделе "Перечисление RunspaceAvailability".
Невозможно изменить значение времени ожидания простоя psSession при подключении к PSSession. Параметр
Connect-PSSession
SessionOption принимает объект SessionOption, имеющий значение IdleTimeout. Однако значение IdleTimeout объекта SessionOption и значение IdleTimeout переменной$PSSessionOption
игнорируются при подключении к PSSession.Вы можете задать и изменить время ожидания бездействия PSSession при создании PSSession с помощью
New-PSSession
командлетов илиInvoke-Command
командлетов, а также при отключении от PSSession.Свойство IdleTimeout psSession имеет решающее значение для отключенных сеансов, так как оно определяет, сколько времени на удаленном компьютере сохраняется отключенный сеанс. Отключенные сеансы считаются находящимися в режиме простоя с момента их отключения, даже если в них выполняются команды.
Связанные ссылки
PowerShell