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 командлета или параметра 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:Named
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

Вы можете передать сеанс (PSSession) в этот командлет.

Выходные данные

PSSession

Этот командлет возвращает объект, представляющий сеанс, к которому он повторно подключен.

Примечания

PowerShell включает следующие псевдонимы для Connect-PSSession:

  • Windows:

    • 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 имеет решающее значение для отключенных сеансов, так как оно определяет, сколько времени на удаленном компьютере сохраняется отключенный сеанс. Отключенные сеансы считаются находящимися в режиме простоя с момента их отключения, даже если в них выполняются команды.