Receive-PSSession

Возвращает результаты выполнения команд в отключенных сеансах

Синтаксис

Receive-PSSession
       [-Session] <PSSession>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-Id] <Int32>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Описание

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

Командлет Receive-PSSession получает результаты команд, выполняемых в сеансах PowerShell (PSSession), которые были отключены. Если сеанс подключен в данный момент, Receive-PSSession получает результаты команд, выполняемых при отключении сеанса. Если сеанс по-прежнему отключен, Receive-PSSession подключитесь к сеансу, возобновляет все команды, которые были приостановлены, и получает результаты команд, выполняемых в сеансе.

Этот командлет появился в PowerShell 3.0.

Вы можете использовать Receive-PSSession дополнение или вместо Connect-PSSession команды. Receive-PSSession может подключаться к любому отключенной или повторно подключенной сеансу, который был запущен в других сеансах или на других компьютерах.

Receive-PSSession работает над PSSessions , которые были отключены намеренно с помощью командлета Disconnect-PSSession или Invoke-Commandпараметра InDisconnectedSession . Или отключается непреднамеренно путем прерывания сети.

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

Дополнительные сведения о функции отключенных сеансов см. в about_Remote_Disconnected_Sessions.

В некоторых примерах используется сложение для уменьшения длины строки и повышения удобочитаемости. Дополнительные сведения см. в about_Splatting.

Примеры

Пример 1. Подключение в PSSession

Этот пример подключается к сеансу на удаленном компьютере и получает результаты команд, выполняемых в сеансе.

Receive-PSSession -ComputerName Server01 -Name ITTask

Указывает Receive-PSSession удаленный компьютер с параметром ComputerName . Параметр Name определяет сеанс ITTask на компьютере Server01. Пример получает результаты команд, выполняемых в сеансе ITTask.

Так как команда не использует параметр OutTarget , результаты отображаются в командной строке.

Пример 2. Получение результатов всех команд в отключенных сеансах

Этот пример получает результаты всех команд, выполняемых во всех отключенных сеансах на двух удаленных компьютерах.

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

Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

Get-PSSessionиспользует параметр ComputerName для указания удаленных компьютеров. Объекты отправляются вниз конвейера Receive-PSSession.

Пример 3. Получение результатов скрипта, выполняемого в сеансе

В этом примере командлет используется Receive-PSSession для получения результатов скрипта, выполняющегося в сеансе удаленного компьютера.

$parms = @{
  ComputerName = "Server01"
  Name = "ITTask"
  OutTarget = "Job"
  JobName = "ITTaskJob01"
  Credential = "Domain01\Admin01"
}
Receive-PSSession @parms

Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

Команда использует параметры ComputerName и Name для идентификации отключенного сеанса. Он использует параметр OutTarget со значением Job для Receive-PSSession возврата результатов в качестве задания. Параметр JobName указывает имя задания в повторно подключенном сеансе. Параметр Credential запускает Receive-PSSession команду с помощью разрешений администратора домена.

Выходные данные показывают, что Receive-PSSession возвращает результаты в качестве задания в текущем сеансе. Чтобы получить результаты задания, используйте Receive-Job команду

Пример 4. Получение результатов после сбоя сети

В этом примере командлет используется Receive-PSSession для получения результатов задания после сбоя сети, который нарушает подключение к сеансу. PowerShell автоматически пытается повторно подключить сеанс один раз в секунду в течение следующих четырех минут и отказывается от усилий, только если все попытки в четырехминутном интервале завершаются ошибкой.

PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s

Id  Name   ComputerName    State        ConfigurationName     Availability
--  ----   ------------    -----        -----------------     ------------
8   AD      Server01       Opened       ADEndpoint               Available


PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1

Running "New-ADResolve.ps1"

# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes


PS> Get-PSSession -ComputerName Server01

Id  Name   ComputerName    State          ConfigurationName      Availability
--  ----   ------------    -----          -----------------      ------------
1  Backup  Server01        Disconnected   Microsoft.PowerShell           None
8  AD      Server01        Disconnected   ADEndpoint                     None


PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD

Job Id   Name      State         HasMoreData     Location
--       ----      -----         -----------     --------
16       ADJob     Running       True            Server01


PS> Get-PSSession -ComputerName Server01

Id  Name    ComputerName    State         ConfigurationName     Availability
--  ----    ------------    -----         -----------------     ------------
1  Backup   Server01        Disconnected  Microsoft.PowerShell          Busy
8  AD       Server01        Opened        ADEndpoint               Available

Командлет New-PSSession создает сеанс на компьютере Server01 и сохраняет сеанс в переменной $s . Переменная $s показывает, что состояние открыто, а доступность доступна. Эти значения указывают, что вы подключены к сеансу и можете выполнять команды в сеансе.

Командлет Invoke-Command запускает скрипт в сеансе в переменной $s . Скрипт начинает выполнять и возвращать данные, но сетевой сбой возникает, что прерывает сеанс. Пользователь должен выйти из сеанса и перезапустить локальный компьютер.

При перезапуске компьютера пользователь запускает PowerShell и запускает Get-PSSession команду для получения сеансов на компьютере Server01. Выходные данные показывают, что сеанс AD по-прежнему существует на компьютере Server01. Состояние указывает, что сеанс AD отключен. Значение доступности None указывает, что сеанс не подключен к каким-либо клиентским сеансам.

Командлет Receive-PSSession повторно подключается к сеансу AD и получает результаты скрипта, запущенного в сеансе. Команда использует параметр OutTarget для запроса результатов задания с именем ADJob. Команда возвращает объект задания и выходные данные указывают на то, что скрипт по-прежнему выполняется.

Командлет Get-PSSession используется для проверка состояния задания. Выходные данные подтверждают, что Receive-PSSession командлет повторно подключен к сеансу AD , который теперь открыт и доступен для команд. И скрипт возобновил выполнение и получает результаты скрипта.

Пример 5. Повторное подключение к отключенным сеансам

В этом примере командлет используется Receive-PSSession для повторного подключения к сеансам, которые были намеренно отключены и получения результатов заданий, выполняемых в сеансах.

PS> $parms = @{
      InDisconnectedSession = $True
      ComputerName = "Server01", "Server02", "Server30"
      FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
      Name = "BugStatus"
      SessionOption = @{IdleTimeout = 86400000}
      ConfigurationName = "ITTasks"
    }
PS> Invoke-Command @parms
PS> Exit


PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s

Id  Name   ComputerName    State         ConfigurationName     Availability
--  ----   ------------    -----         -----------------     ------------
1  ITTask  Server01        Disconnected  ITTasks                       None
8  ITTask  Server02        Disconnected  ITTasks                       None
2  ITTask  Server30        Disconnected  ITTasks                       None


PS> $Results = Receive-PSSession -Session $s
PS> $s

Id  Name   ComputerName    State         ConfigurationName     Availability
--  ----   ------------    -----         -----------------     ------------
1  ITTask  Server01        Opened        ITTasks                  Available
8  ITTask  Server02        Opened        ITTasks                  Available
2  ITTask  Server30        Opened        ITTasks                  Available


PS> $Results

Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

Командлет Invoke-Command запускает скрипт на трех удаленных компьютерах. Так как скрипт собирает и суммирует данные из нескольких баз данных, он часто занимает длительное время завершения скрипта. Команда использует параметр InDisconnectedSession , который запускает скрипты, а затем немедленно отключает сеансы. Параметр SessionOption расширяет значение IdleTimeout отключенного сеанса. Отключенные сеансы считаются неактивными с момента их отключения. Важно задать время ожидания простоя достаточно долго, чтобы команды могли завершиться, и вы можете повторно подключиться к сеансу. Параметр IdleTimeout можно задать только при создании PSSession и его изменении только при отключении от него. Невозможно изменить значение IdleTimeout при подключении к PSSession или получении результатов. После выполнения команды пользователь выходит из PowerShell и закрывает компьютер.

На следующий день пользователь возобновляет Windows, запускает PowerShell и использует Get-PSSession для получения сеансов, в которых выполнялись скрипты. Команда определяет сеансы по имени компьютера, имени сеанса и имени конфигурации сеанса и сохраняет сеансы в переменной $s . Отображается значение переменной $s и показывает, что сеансы отключены, но не заняты.

Командлет Receive-PSSession подключается к сеансам в переменной $s и получает результаты. Команда сохраняет результаты в переменной $Results . Переменная $s отображается и показывает, что сеансы подключены и доступны для команд.

Сценарий приводит к $Results отображению переменной в консоли PowerShell. Если какой-либо из результатов непредвиден, пользователь может выполнить команды в сеансах, чтобы изучить первопричину.

Пример 6. Выполнение задания в отключенном сеансе

В этом примере показано, что происходит с заданием, выполняющимся в отключенном сеансе.

PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j

Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01


PS> $s | Disconnect-PSSession

Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell          None


PS> $j

Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01


PS> Receive-Job $j -Keep

Return 1
Return 2


PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j

Return 3
Return 4

Командлет New-PSSession создает сеанс test на компьютере Server01. Сеанс сохраняется в переменную $s.

Командлет Invoke-Command выполняет команду в сеансе в переменной $s . Команда использует параметр AsJob для выполнения команды в качестве задания и создает объект задания в текущем сеансе. Команда возвращает объект задания, сохраненный в переменной $j . Переменная $j отображает объект задания.

Объект сеанса в $s переменной отправляется вниз конвейера Disconnect-PSSession и сеанс отключен.

Отображается $j переменная и отображается эффект отключения объекта задания в переменной $j . Состояние задания теперь отключено.

Выполняется Receive-Job задание в переменной $j . Выходные данные показывают, что задание начало возвращать выходные данные до сеанса и задание было отключено.

Командлет Connect-PSSession выполняется в том же сеансе клиента. Команда повторно подключается к сеансу test на компьютере Server01 и сохраняет сеанс в переменной $s2 .

Командлет Receive-PSSession получает результаты задания, выполняемого в сеансе. Так как команда выполняется в том же сеансе, Receive-PSSession возвращает результаты в качестве задания по умолчанию и повторно использует тот же объект задания. Команда сохраняет задание в переменной $j2 . Командлет Receive-Job получает результаты задания в переменной $j .

Параметры

-AllowRedirection

Указывает, что этот командлет разрешает перенаправление этого подключения к альтернативному универсальному идентификатору ресурса (URI).

При использовании параметра ConnectionURI удаленный компьютер может вернуть инструкцию для перенаправления на другой URI. По умолчанию PowerShell не перенаправляет подключения, но этот параметр можно использовать для перенаправления подключения.

Можно также ограничить количество перенаправлений соединения, изменив значение параметра сеанса MaximumConnectionRedirectionCount. Используйте параметр MaximumRedirection командлета New-PSSessionOption или задайте свойство Maximum Подключение ionRedirectionCount переменной $PSSessionOption предпочтения. Значение по умолчанию равно 5.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

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

Введите сегмент имени приложения URI подключения. Например, в следующем URI подключения WSMan — это имя приложения: http://localhost:5985/WSMAN

Имя приложения сеанса хранится в runspace.ПодключениеСвойство ionInfo.AppName сеанса.

Значение параметра используется для выбора и фильтрации сеансов. Оно не изменяет приложение, которое использует сеанс.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

Указывает механизм, используемый для проверки подлинности учетных данных пользователя в команде для повторного подключения к отключенном сеансу. Допустимые значения для этого параметра:

  • По умолчанию.
  • Базовая
  • Credssp
  • Дайджест
  • Kerberos
  • Согласование
  • NegotiateWithImplicitCredential

Значение по умолчанию ― Default.

Дополнительные сведения о значениях этого параметра см. в разделе "Перечисление AuthenticationMechanism".

Внимание

Проверка подлинности поставщика поддержки безопасности учетных данных (CredSSP), в которой учетные данные пользователя передаются на удаленный компьютер для проверки подлинности, предназначена для команд, требующих проверки подлинности на нескольких ресурсах, таких как доступ к удаленному сетевому ресурсу. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, могут использоваться для управления сетевым сеансом.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Задает цифровой сертификат с открытым ключом (X509) учетной записи пользователя, который располагает разрешением для подключения к отсоединенному сеансу. Введите отпечаток сертификата.

Сертификаты используются при проверке подлинности на основе сертификата клиента. Сертификаты можно сопоставить только с локальными учетными записями пользователей и не работать с учетными записями домена.

Чтобы получить отпечаток сертификата, используйте команду Get-ItemGet-ChildItem или команду на диске PowerShell Cert: .

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Указывает компьютер, на котором хранится отключенный сеанс. Сеансы хранятся на компьютере, который находится на стороне сервера или получает конец подключения. По умолчанию используется локальный компьютер.

Введите имя NetBIOS, IP-адрес или полное доменное имя (FQDN) одного компьютера. Дикие карта символы не разрешены. Чтобы указать локальный компьютер, введите имя компьютера, точку (.), $env:COMPUTERNAMEили localhost.

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
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, ComputerName, Port и ApplicationName, чтобы указать значения URI подключения.

Допустимые значения для сегмента транспорта 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:http://localhost:5985/WSMAN
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 на локальном или удаленном компьютере. Идентификатор экземпляра хранится в свойстве InstanceID для PSSession.

Type:Guid
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-JobName

Задает понятное имя для возвращаемого Receive-PSSession задания.

Receive-PSSession возвращает задание, когда значение параметра OutTarget — Job или задание, которое выполняется в отключенном сеансе, было запущено в текущем сеансе.

Если задание, выполняемое в отключенном сеансе, было запущено в текущем сеансе, PowerShell повторно использует исходный объект задания в сеансе и игнорирует значение параметра JobName .

Если задание, которое выполняется в отключенном сеансе, было запущено в другом сеансе, PowerShell создает новый объект задания. При этом используется имя по умолчанию, но его можно изменить с помощью этого параметра.

Если значение по умолчанию или явное значение параметра OutTarget не является заданием, команда завершается успешно, но параметр JobName не действует.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Указывает понятное имя отключенного сеанса.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutTarget

Определяет, как возвращаются результаты сеанса. Допустимые значения для этого параметра:

  • Задание. асинхронно возвращает результаты в объекте задания. Параметр JobName можно использовать для указания имени или нового имени задания.
  • Узел. возвращает результаты из командной строки (синхронно). Если команда возобновляется или результаты состоят из большого числа объектов, ответ может быть отложен.

Значением по умолчанию параметра OutTarget является Host. Если команда, полученная в отключенном сеансе, была запущена в текущем сеансе, значение по умолчанию параметра OutTarget является формой, в которой была запущена команда. Если команда была запущена как задание, по умолчанию она возвращается в качестве задания. В противном случае он возвращается в хост-программу по умолчанию.

Как правило, основная программа отображает возвращаемые объекты в командной строке без задержки, но это не всегда так.

Type:OutTarget
Accepted values:Default, Host, Job
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

-UseSSL

Указывает, что этот командлет использует протокол SSL для подключения к отключенным сеансам. По умолчанию SSL не используется.

WS-Management шифрует все содержимое PowerShell, передаваемое по сети. UseSSL — это дополнительная защита, которая отправляет данные через HTTPS-подключение вместо HTTP-подключения.

Если вы используете этот параметр и SSL недоступен на порту, который используется для команды, команда завершается ошибкой.

Type:SwitchParameter
Position:Named
Default value:False
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

Объекты сеанса можно передать в этот командлет, например объекты, возвращаемые командлетом Get-PSSession .

Int32

Идентификаторы сеанса можно передать в этот командлет.

Guid

Вы можете передать идентификаторы экземпляров сеансов этого командлета.

String

Имена сеансов можно передать в этот командлет.

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

Job

Если значение или значение по умолчанию параметра OutTarget равно Job, Receive-PSSession возвращает объект задания.

PSObject

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

Примечания

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

  • Все платформы:
    • rcsn

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

Receive-PSSession получает результаты только из сеансов, которые были отключены. Можно отключить и повторно подключиться только к сеансам, подключенным к компьютерам с PowerShell 3.0 или более поздними версиями.

Если команды, выполняемые в отключенном сеансе, не создавали результаты или если результаты уже были возвращены в другой сеанс, Receive-PSSession не генерирует никаких выходных данных.

Режим буферизации выходных данных сеанса определяет, как команды в сеансе управляют выходными данными при отключении сеанса. Если значение параметра OutputBufferingMode сеанса — Drop, а выходной буфер заполнен, команда начинает удалять выходные данные. Receive-PSSession не удается восстановить эти выходные данные. Дополнительные сведения о параметре режима буферизации выходных данных см. в статьях справки для командлетов New-PSSessionOption и New-PSTransportOption.

Невозможно изменить значение времени ожидания простоя psSession при подключении к PSSession или получении результатов. Параметр Receive-PSSession SessionOption принимает объект SessionOption, имеющий значение IdleTimeout. Однако значение IdleTimeout объекта SessionOption и значение IdleTimeout переменной $PSSessionOption игнорируются при подключении к PSSession или получению результатов.

  • Вы можете задать и изменить время ожидания бездействия PSSession при создании PSSession с помощью New-PSSession командлетов или Invoke-Command командлетов, а также при отключении от PSSession.
  • Свойство IdleTimeout psSession имеет решающее значение для отключенных сеансов, так как оно определяет, сколько времени сеанс отключенный поддерживается на удаленном компьютере. Отключенные сеансы считаются находящимися в режиме простоя с момента их отключения, даже если в них выполняются команды.

При запуске задания в удаленном сеансе с помощью параметра Invoke-Command AsJob командлета объект задания создается в текущем сеансе, даже если задание выполняется в удаленном сеансе. При отключении удаленного сеанса объект задания в текущем сеансе отключен от задания. Объект задания содержит все результаты, возвращенные в него, но не получают новые результаты задания в отключенном сеансе.

Если другой клиент подключается к сеансу, который содержит выполняемое задание, результаты, доставленные в исходный объект задания в исходном сеансе, недоступны в только что подключенном сеансе. После повторного подключения сеанса доступны только те результаты, которые не были доставлены в исходный объект задания.

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

Чтобы предотвратить потерю данных в сеансах, которые планируется отключить, используйте параметр InDisconnectedSession командлета Invoke-Command . Поскольку этот параметр запрещает возвращать результаты текущему сеансу, после повторного подключения сеанса доступны все результаты.

Вы также можете предотвратить потерю данных с помощью командлета Invoke-Command для выполнения Start-Job команды в удаленном сеансе. В этом случае объект задания создается в удаленном сеансе. Командлет нельзя использовать Receive-PSSession для получения результатов задания. Вместо этого используйте командлет для подключения к сеансу, а затем используйте Connect-PSSessionInvoke-Command командлет для выполнения Receive-Job команды в сеансе.

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

При отключении PSSession состояние сеанса отключено, а доступность — None.

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