Поделиться через


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

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

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

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-PSSessionSessionOption объекта принимает объект SessionOption со значением IdleTimeout. Однако значение IdleTimeout объекта SessionOption и значение IdleTimeout переменной $PSSessionOption игнорируются при подключении к PSSession.

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

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