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-CommandInDisconnectedSession командлета, и тех, которые были непреднамеренно отключены, такие как временный сбой сети.

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

Эта команда повторно подключается к сеансу ITTask на компьютере Server01.

Выходные данные показывают, что команда выполнена успешно. Состояние сеанса и OpenedдоступностьAvailable: это означает, что можно выполнять команды в сеансе.

Пример 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 сеанс на локальном компьютере. Состояние сеанса и 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 в сеансе в качестве входных данных для скрипта.

PS C:\> $s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
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...

PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

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

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}

PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

Девятая команда отключается от сеанса в переменной $s . Администратор закрывает nd отключается от сеанса в переменной $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

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

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

PSSession

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

Примечания

  • Этот командлет доступен только на платформах Windows.

  • Connect-PSSession повторно подключается только к отключенным сеансам, то есть сеансам, имеющим значение "Отключено" для свойства State . Можно отключить и повторно подключить только сеансы, подключенные к компьютерам под управлением Windows PowerShell 3.0 или более поздних версий.

  • Если вы используете Connect-PSSession в сеансе, который не отключен, команда не влияет на сеанс и не создает ошибок.

  • Отключенные сеансы замыкания на себя с интерактивными токенами, созданными с помощью параметра EnableNetworkAccess , можно повторно подключить только с компьютера, на котором был создан сеанс. Это ограничение защищает компьютер от вредоносного доступа.

  • Значение свойства StatepsSession относительно текущего сеанса. Таким образом, значение "Отключено " означает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключается от всех сеансов. Он может быть подключен к другому сеансу. Определить возможность подключения или повторного подключения к сеансу позволяет свойство Availability.

    Если свойство Availability имеет значение None, подключиться к сеансу можно. Значение "Занято" указывает, что подключение к PSSession невозможно, так как оно подключено к другому сеансу.

    Дополнительные сведения о значениях свойства State сеансов см. в разделе "Перечисление RunspaceState".

    Дополнительные сведения о значениях свойства доступности сеансов см. в описании перечисления RunspaceAvailability.

  • Значение времени ожидания простоя PSSession нельзя изменить при подключении к PSSession. Параметр Connect-PSSessionSessionOption принимает объект SessionOption со значением IdleTimeout. Однако значение IdleTimeout объекта SessionOption и значение IdleTimeout переменной $PSSessionOption игнорируются при подключении к PSSession.

    Вы можете задать и изменить время ожидания простоя PSSession при создании PSSession с помощью New-PSSession командлетов или Invoke-Command командлетов, а также при отключении от PSSession.

    Свойство IdleTimeoutPSSession имеет решающее значение для отключенных сеансов, так как оно определяет, сколько времени на удаленном компьютере поддерживается отключенный сеанс. Отключенные сеансы считаются находящимися в режиме простоя с момента их отключения, даже если в них выполняются команды.