Partilhar via


Receive-PSSession

Obtém resultados de comandos em sessões desconectadas

Sintaxe

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]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-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
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

O cmdlet Receive-PSSession obtém os resultados de comandos executados em sessões do Windows PowerShell (PSSession) que foram desconectados. Se a sessão estiver conectada no momento, Receive-PSSession obterá os resultados dos comandos que estavam em execução quando a sessão foi desconectada. Se a sessão ainda estiver desconectada, Receive-PSSession se conecta à sessão, retoma todos os comandos que foram suspensos e obtém os resultados dos comandos em execução na sessão.

Você pode usar um Receive-PSSession além ou em vez de um comando Connect-PSSession. Receive-PSSession pode se conectar a qualquer sessão desconectada ou reconectada. Estes incluem aqueles que foram iniciados em outras sessões ou em outros computadores.

Receive-PSSession funciona em PSSessions que foram desconectados intencionalmente, como usando o cmdlet Disconnect-PSSession ou o parâmetro InDisconnectedSession do cmdlet Invoke-Command, ou involuntariamente, como por uma interrupção de rede.

Se você usar o cmdlet Receive-PSSession para se conectar a uma sessão na qual nenhum comando está em execução ou suspenso, Receive-PSSession se conecta à sessão, mas não retorna nenhuma saída ou erros.

Para obter mais informações sobre o recurso Sessões Desconectadas, consulte about_Remote_Disconnected_Sessions.

Este cmdlet foi introduzido no Windows PowerShell 3.0.

Exemplos

Exemplo 1: Ligar a uma PSSession

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask

Este comando usa o cmdlet Receive-PSSession para se conectar à sessão ITTask no computador Server01 e obter os resultados dos comandos que estavam sendo executados na sessão.

Como o comando não usa o parâmetro OutTarget, os resultados aparecem na linha de comando.

Exemplo 2: Obter resultados de todos os comandos em sessões desconectadas

PS C:\> Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

Este comando obtém os resultados de todos os comandos em execução em todas as sessões desconectadas nos computadores Server01 e Server02.

Se alguma sessão não foi desconectada ou não está executando comandos, Receive-PSSession não se conecta à sessão e não retorna nenhuma saída ou erros.

Exemplo 3: Obter os resultados de um script em execução em uma sessão

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask -OutTarget Job -JobName ITTaskJob01 -Credential Domain01\Admin01
Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

Este comando usa o cmdlet Receive-PSSession para obter os resultados de um script que estava sendo executado na sessão ITTask no computador Server01.

O comando usa os parâmetros ComputerName e Name para identificar a sessão desconectada. Ele usa o parâmetro OutTarget com um valor de Job para direcionar Receive-PSSession para retornar os resultados como um trabalho e o parâmetro JobName para especificar um nome para o trabalho na sessão reconectada.

O comando usa o parâmetro Credential para executar o comando Receive-PSSession usando as permissões de um administrador de domínio.

A saída mostra que Receive-PSSession retornou os resultados como um trabalho na sessão atual. Para obter os resultados do trabalho, use um comando Receive-Job

Exemplo 4: Obter resultados após uma interrupção da rede

The first command uses the New-PSSession cmdlet to create a session on the Server01 computer. The command saves the session in the $s variable.The second command gets the session in the $s variable. Notice that the **State** is Opened and the **Availability** is Available. These values indicate that you are connected to the session and can run commands in the session.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS C:\> $s

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

The third command uses the Invoke-Command cmdlet to run a script in the session in the $s variable.The script begins to run and return data, but a network outage occurs that interrupts the session. The user has to exit the session and restart the local computer.
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

When the computer restarts, the user starts Windows PowerShell and runs a Get-PSSession command to get sessions on the Server01 computer. The output shows that the AD session still exists on the Server01 computer. The **State** indicates that it is disconnected and the **Availability** value, None, indicates that it is not connected to any client sessions.
PS C:\> Get-PSSession -ComputerName Server01

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


The fifth command uses the **Receive-PSSession** cmdlet to reconnect to the AD session and get the results of the script that ran in the session. The command uses the *OutTarget* parameter to request the results in a job named ADJob.The command returns a job object. The output indicates that the script is still running.
PS C:\> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id     Name      State         HasMoreData     Location
--     ----      -----         -----------     --------
16     ADJob     Running       True            Server01

The sixth command uses the Get-PSSession cmdlet to check the job state. The output confirms that, in addition to resuming script execution and getting the script results, the **Receive-PSSession** cmdlet reconnected to the AD session, which is now open and available for commands.
PS C:\> Get-PSSession -ComputerName Server01
Id Name    ComputerName    State         ConfigurationName     Availability
-- ----    ------------    -----         -----------------     ------------
 1 Backup  Server01        Disconnected  Microsoft.PowerShell          Busy
 8 AD      Server01        Opened        ADEndpoint                Available

Este exemplo usa o cmdlet Receive-PSSession para obter os resultados de um trabalho depois que uma interrupção de rede interrompe uma conexão de sessão. O Windows PowerShell tenta reconectar automaticamente a sessão uma vez a cada segundo durante os próximos quatro minutos e abandona o esforço somente se todas as tentativas no intervalo de quatro minutos falharem.

Exemplo 5: Reconectar-se a sessões desconectadas

The first command uses the Invoke-Command cmdlet to run a script on the three remote computers. Because the scripts gathers and summarize data from multiple databases, it often takes the script an extended time to finish. The command uses the *InDisconnectedSession* parameter, which starts the scripts and then immediately disconnects the sessions.The command uses the *SessionOption* parameter to extend the **IdleTimeout** value of the disconnected session. Disconnected sessions are considered to be idle from the moment they are disconnected, so it is important to set the idle time-out for long enough that the commands can complete and you can reconnect to the session, if necessary. You can set the **IdleTimeout** only when you create the **PSSession** and change it only when you disconnect from it. You cannot change the **IdleTimeout** value when you connect to a **PSSession** or receiving its results.After running the command, the user exits Windows PowerShell and closes the computer .
PS C:\> Invoke-Command -InDisconnectedSession -ComputerName Server01, Server02, Server30 -FilePath \\Server12\Scripts\SharedScripts\Get-BugStatus.ps1 -Name BugStatus -SessionOption @{IdleTimeout = 86400000} -ConfigurationName ITTasks# Exit

# Start Windows PowerShell on a different computer.

On the next day, the user resumes Windows and starts Windows PowerShell. The second command uses the Get-PSSession cmdlet to get the sessions in which the scripts were running. The command identifies the sessions by the computer name, session name, and the name of the session configuration and saves the sessions in the $s variable.The third command displays the value of the $s variable. The output shows that the sessions are disconnected, but not busy, as expected.
PS C:\> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
 PS C:\> $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


The fourth command uses the **Receive-PSSession** cmdlet to connect to the sessions in the $s variable and get their results. The command saves the results in the $Results variable.Another display of the $s variable shows that the sessions are connected and available for commands.
PS C:\> $Results = Receive-PSSession -Session $s
PS C:\> $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


The fifth command displays the script results in the $Results variable. If any of the results are unexpected, the user can run commands in the sessions to investigate.
PS C:\> $Results
Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

Este exemplo usa o cmdlet Receive-PSSession para se reconectar a sessões que foram intencionalmente desconectadas e obter os resultados de trabalhos que estavam sendo executados nas sessões.

Exemplo 6: Executando um trabalho em uma sessão desconectada

The first command uses the New-PSSession cmdlet to create the Test session on the Server01 computer. The command saves the session in the $s variable.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name Test

The second command uses the Invoke-Command cmdlet to run a command in the session in the $s variable. The command uses the *AsJob* parameter to run the command as a job and to create the job object in the current session. The command returns a job object, which is saved in the $j variable.The third command displays the job object in the $j variable.
PS C:\> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob

PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01

The fourth command disconnects the session in the $s variable.
PS C:\> $s | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell  None

The fifth command shows the effect of disconnecting on the job object in the $j variable. The job state is now Disconnected.
PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01

The sixth command runs a Receive-Job command on the job in the $j variable. The output shows that the job began to return output before the session and the job were disconnected.
PS C:\> Receive-Job $j -Keep
Return 1
Return 2

The seventh command is run in the same client session. The command uses the Connect-PSSession cmdlet to reconnect to the Test session on the Server01 computer and saves the session in the $s2 variable.
PS C:\> $s2 = Connect-PSSession -ComputerName Server01 -Name Test

The eighth command uses the **Receive-PSSession** cmdlet to get the results of the job that was running in the session. Because the command is run in the same session, **Receive-PSSession** returns the results as a job by default and reuses the same job object. The command saves the job in the $j2 variable.The ninth command uses the **Receive-Job** cmdlet to get the results of the job in the $j variable.
PS C:\> $j2 = Receive-PSSession -ComputerName Server01 -Name Test

PS C:\> Receive-Job $j
Return 3
Return 4

Este exemplo mostra o que acontece com um trabalho que está sendo executado em uma sessão desconectada.

Parâmetros

-AllowRedirection

Indica que esse cmdlet permite o redirecionamento dessa conexão para um URI (Uniform Resource Identifier) alternativo.

Quando você usa o parâmetro ConnectionURI, o destino remoto pode retornar uma instrução para redirecionar para um URI diferente. Por padrão, o Windows PowerShell não redireciona conexões, mas você pode usar esse parâmetro para habilitá-lo a redirecionar a conexão.

Você também pode limitar o número de vezes que a conexão é redirecionada alterando o MaximumConnectionRedirectionCount valor da opção de sessão. Use o parâmetro MaximumRedirection do cmdlet New-PSSessionOption ou defina a propriedade MaximumConnectionRedirectionCount da variável de preferência $PSSessionOption. O valor padrão é 5.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-ApplicationName

Especifica um aplicativo. Esse cmdlet se conecta somente a sessões que usam o aplicativo especificado.

Insira o segmento de nome do aplicativo do URI de conexão. Por exemplo, no URI de conexão a seguir, o nome do aplicativo é WSMan: https://localhost:5985/WSMAN. O nome do aplicativo de uma sessão é armazenado na propriedade Runspace.ConnectionInfo.AppName da sessão.

O valor desse parâmetro é usado para selecionar e filtrar sessões. Ele não altera o aplicativo que a sessão usa.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Authentication

Especifica o mecanismo usado para autenticar as credenciais do usuário no comando para se reconectar à sessão desconectada. Os valores aceitáveis para este parâmetro são:

  • Inadimplência
  • Básico
  • Credssp
  • Resumo
  • Kerberos
  • Negociar
  • NegociarComImplicitCredential

O valor padrão é Default.

Para obter mais informações sobre os valores desse parâmetro, consulte AuthenticationMechanism Enumeration.

Atenção

A autenticação CredSSP (Credential Security Support Provider), na qual as credenciais do usuário são passadas para um computador remoto para ser autenticado, foi projetada para comandos que exigem autenticação em mais de um recurso, como acessar um compartilhamento de rede remoto. Este mecanismo aumenta o risco de segurança da operação remota. Se o computador remoto estiver comprometido, as credenciais que são passadas para ele podem ser usadas para controlar a sessão de rede.

Tipo:AuthenticationMechanism
Valores aceites:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-CertificateThumbprint

Especifica o certificado de chave pública digital (X509) de uma conta de usuário que tem permissão para se conectar à sessão desconectada. Insira a impressão digital do certificado.

Os certificados são usados na autenticação baseada em certificado de cliente. Eles podem ser mapeados apenas para contas de usuário locais. Eles não funcionam com contas de domínio.

Para obter uma impressão digital de certificado, use um comando Get-Item ou Get-ChildItem na unidade Windows PowerShell Cert:.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-ComputerName

Especifica o computador no qual a sessão desconectada é armazenada. As sessões são armazenadas no computador que está no lado do servidor ou recebendo a extremidade de uma conexão. O padrão é o computador local.

Digite o nome NetBIOS, um endereço IP ou um nome de domínio totalmente qualificado de um computador. Caracteres curinga não são permitidos. Para especificar o computador local, digite o nome do computador, localhost ou um ponto (.)

Tipo:String
Aliases:Cn
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-ConfigurationName

Conecta-se somente a sessões que usam a configuração de sessão especificada.

Insira um nome de configuração ou o URI de recurso totalmente qualificado para uma configuração de sessão. Se você especificar apenas o nome da configuração, o seguinte URI de esquema será precedido: https://schemas.microsoft.com/powershell. O nome de configuração de uma sessão é armazenado na propriedade ConfigurationName da sessão.

O valor desse parâmetro é usado para selecionar e filtrar sessões. Ele não altera a configuração da sessão que a sessão usa.

Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Confirm

Solicita confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-ConnectionUri

Especifica um URI que define o ponto de extremidade de conexão usado para se reconectar à sessão desconectada.

O URI deve ser totalmente qualificado. O formato desta cadeia de caracteres é o seguinte:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

O valor padrão é o seguinte:

https://localhost:5985/WSMAN

Se você não especificar um URI de conexão, poderá usar os parâmetros UseSSL, ComputerName, Porte ApplicationName parâmetros para especificar os valores de URI de conexão.

Os valores válidos para o segmento de de Transporte de do URI são HTTP e HTTPS. Se você especificar um URI de conexão com um segmento de Transporte, mas não especificar uma porta, a sessão será criada com portas padrão: 80 para HTTP e 443 para HTTPS. Para usar as portas padrão para comunicação remota do Windows PowerShell, especifique a porta 5985 para HTTP ou 5986 para HTTPS.

Se o computador de destino redireciona a conexão para um URI diferente, o Windows PowerShell impede o redirecionamento, a menos que você use o parâmetro AllowRedirection no comando.

Tipo:Uri
Aliases:URI, CU
Position:0
Default value:https://localhost:5985/WSMAN
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Credential

Especifica uma conta de usuário que tem permissão para se conectar à sessão desconectada. O padrão é o usuário atual.

Digite um nome de usuário, como User01 ou Domain01\User01. Ou insira um objeto PSCredential , como um gerado pelo cmdlet Get-Credential. Se você digitar um nome de usuário, esse cmdlet solicitará uma senha.

Tipo:PSCredential
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Id

Especifica a ID da sessão desconectada. O parâmetro Id funciona somente quando a sessão desconectada foi conectada anteriormente à sessão atual.

Este parâmetro é válido, mas não eficaz, quando a sessão é armazenada no computador local, mas não foi conectada à sessão atual.

Tipo:Int32
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-InstanceId

Especifica o ID da instância da sessão desconectada.

O ID da instância é um GUID que identifica exclusivamente um PSSession em um computador local ou remoto.

O ID da instância é armazenado na propriedade InstanceID do PSSession.

Tipo:Guid
Position:Named
Default value:None
Necessário:True
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-JobName

Especifica um nome amigável para o trabalho que Receive-PSSession retorna.

Receive-PSSession retorna um trabalho quando o valor do parâmetro OutTarget é Job ou o trabalho que está sendo executado na sessão desconectada foi iniciado na sessão atual.

Se o trabalho em execução na sessão desconectada tiver sido iniciado na sessão atual, o Windows PowerShell reutilizará o objeto de trabalho original na sessão e ignorará o valor do parâmetro JobName.

Se o trabalho em execução na sessão desconectada tiver sido iniciado em uma sessão diferente, o Windows PowerShell criará um novo objeto de trabalho. Ele usa um nome padrão, mas você pode usar esse parâmetro para alterar o nome.

Se o valor padrão ou explícito do parâmetro OutTarget não for Job, o comando será bem-sucedido, mas o parâmetro JobName não terá efeito.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Name

Especifica o nome amigável da sessão desconectada.

Tipo:String
Position:Named
Default value:None
Necessário:True
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-OutTarget

Determina como os resultados da sessão são retornados. Os valores aceitáveis para este parâmetro são:

  • Trabalho. Retorna os resultados de forma assíncrona em um objeto de trabalho. Você pode usar o parâmetro JobName para especificar um nome ou um novo nome para o trabalho.
  • Anfitrião. Retorna os resultados para a linha de comando (de forma síncrona). Se o comando estiver sendo retomado ou os resultados consistirem em um grande número de objetos, a resposta poderá ser atrasada.

O valor padrão do parâmetro OutTarget é Host. No entanto, se o comando que está sendo recebido na sessão desconectada foi iniciado na sessão atual, o valor padrão do parâmetro OutTarget é o formato no qual o comando foi iniciado. Se o comando foi iniciado como um trabalho, ele é retornado como um trabalho por padrão. Caso contrário, ele é retornado ao programa host por padrão.

Normalmente, o programa host exibe objetos retornados na linha de comando sem demora, mas esse comportamento pode variar.

Tipo:OutTarget
Valores aceites:Default, Host, Job
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Port

Especifica a porta de rede no computador remoto que é usada para se reconectar à sessão. Para se conectar a um computador remoto, o computador remoto deve estar escutando na porta que a conexão usa. As portas padrão são 5985, que é a porta WinRM para HTTP, e 5986, que é a porta WinRM para HTTPS.

Antes de usar uma porta alternativa, você deve configurar o ouvinte do WinRM no computador remoto para ouvir nessa porta. Para configurar o ouvinte, digite os dois comandos a seguir no prompt do Windows PowerShell:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

Não use o parâmetro Port, a menos que seja necessário. A porta definida no comando aplica-se a todos os computadores ou sessões em que o comando é executado. Uma configuração de porta alternativa pode impedir que o comando seja executado em todos os computadores.

Tipo:Int32
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Session

Especifica a sessão desconectada. Insira uma variável que contenha o PSSession ou um comando que crie ou obtenha o PSSession , como um comando Get-PSSession.

Tipo:PSSession
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-SessionOption

Especifica opções avançadas para a sessão. Insira um objeto SessionOption, como um que você cria usando o cmdlet New-PSSessionOption, ou uma tabela de hash na qual as chaves são nomes de opção de sessão e os valores são valores de opção de sessão.

Os valores padrão para as opções são determinados pelo valor da variável de preferência $PSSessionOption, se ela estiver definida. Caso contrário, os valores padrão são estabelecidos pelas opções definidas na configuração da sessão.

Os valores de opção de sessão têm precedência sobre os valores padrão para sessões definidas na variável de preferência $PSSessionOption e na configuração da sessão. No entanto, eles não têm precedência sobre os valores máximos, cotas ou limites definidos na configuração da sessão.

Para obter uma descrição das opções de sessão que inclui os valores padrão, consulte New-PSSessionOption. Para obter informações sobre a variável de preferência $PSSessionOption, consulte about_Preference_Variables. Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.

Tipo:PSSessionOption
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-UseSSL

Indica que esse cmdlet usa o protocolo SSL (Secure Sockets Layer) para se conectar à sessão desconectada. Por padrão, o SSL não é usado.

WS-Management criptografa todo o conteúdo do Windows PowerShell transmitido pela rede. UseSSL é uma proteção adicional que envia os dados através de uma conexão HTTPS em vez de uma conexão HTTP.

Se você usar esse parâmetro, mas o SSL não estiver disponível na porta usada para o comando, o comando falhará.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

PSSession

Você pode canalizar objetos de sessão, como aqueles retornados pelo cmdlet Get-PSSession, para esse cmdlet.

Int32

Você pode canalizar IDs de sessão para este cmdlet.

Guid

Você pode canalizar as IDs de instância das sessões deste cmdlet.

String

Você pode canalizar nomes de sessão para este cmdlet.

Saídas

System.Management.Automation.Job or PSObject

Este cmdlet retorna os resultados dos comandos executados na sessão desconectada, se houver. Se o valor ou o valor padrão do parâmetro OutTarget for Job, Receive-PSSession retornará um objeto de trabalho. Caso contrário, ele retorna objetos que representam os resultados desse comando.

Notas

  • Receive-PSSession obtém resultados apenas de sessões que foram desconectadas. Somente sessões conectadas ou encerradas em computadores que executam o Windows PowerShell 3.0 ou versões posteriores podem ser desconectadas e reconectadas.

  • Se os comandos que estavam sendo executados na sessão desconectada não geraram resultados ou se os resultados já foram retornados para outra sessão, Receive-PSSession não gera nenhuma saída.

  • O modo de buffer de saída de uma sessão determina como os comandos na sessão gerenciam a saída quando a sessão é desconectada. Quando o valor da opção OutputBufferingMode da sessão é Drop e o buffer de saída está cheio, o comando começa a excluir a saída. Receive-PSSession não pode recuperar essa saída. Para obter mais informações sobre a opção de modo de buffer de saída, consulte os tópicos de ajuda para os cmdlets New-PSSessionOption e New-PSTransportOption.

  • Não é possível alterar o valor de tempo limite ocioso de um PSSession quando você se conecta ao PSSession ou recebe resultados. O parâmetro SessionOption de Receive-PSSession usa um objeto SessionOption que tenha um valor de IdleTimeout . No entanto, o valor de IdleTimeout do objeto SessionOption e o valor IdleTimeout da variável $PSSessionOption são ignorados quando ele se conecta a um PSSession ou recebendo resultados.

    Você pode definir e alterar o tempo limite ocioso de um PSSession ao criar oPSSession , usando os cmdlets New-PSSession ou Invoke-Command e ao se desconectar do PSSession.

    A propriedade IdleTimeout de um PSSession é crítica para sessões desconectadas, pois determina por quanto tempo uma sessão desconectada é mantida no computador remoto. As sessões desconectadas são consideradas ociosas a partir do momento em que são desconectadas, mesmo que os comandos estejam em execução na sessão desconectada.

  • Se você iniciar um trabalho em uma sessão remota usando o parâmetro AsJob do cmdlet Invoke-Command, o objeto de trabalho será criado na sessão atual, mesmo que o trabalho seja executado na sessão remota. Se você desconectar a sessão remota, o objeto de trabalho na sessão atual será desconectado do trabalho. O objeto de trabalho ainda contém todos os resultados que foram retornados a ele, mas não recebe novos resultados do trabalho na sessão desconectada.

    Se um cliente diferente se conectar à sessão que contém o trabalho em execução, os resultados que foram entregues ao objeto de trabalho original na sessão original não estarão disponíveis na sessão recém-conectada. Somente os resultados que não foram entregues ao objeto de trabalho original estão disponíveis na sessão reconectada.

    Da mesma forma, se você iniciar um script em uma sessão e, em seguida, se desconectar da sessão, todos os resultados que o script entregar à sessão antes de se desconectar não estarão disponíveis para outro cliente que se conecta à sessão.

    Para evitar a perda de dados em sessões que você pretende desconectar, use o parâmetro InDisconnectedSession do cmdlet Invoke-Command. Como esse parâmetro impede que os resultados sejam retornados à sessão atual, todos os resultados ficam disponíveis quando a sessão é reconectada.

    Você também pode evitar a perda de dados usando o cmdlet Invoke-Command para executar um comando Start-Job na sessão remota. Nesse caso, o objeto de trabalho é criado na sessão remota. Não é possível usar o cmdlet Receive-PSSession para obter os resultados do trabalho. Em vez disso, use o cmdlet Connect-PSSession para se conectar à sessão e, em seguida, use o cmdlet Invoke-Command para executar um comando Receive-Job na sessão.

  • Quando uma sessão que contém um trabalho em execução é desconectada e, em seguida, reconectada, o objeto de trabalho original é reutilizado somente se o trabalho for desconectado e reconectado à mesma sessão, e o comando para reconectar não especificar um novo nome de trabalho. Se a sessão for reconectada a uma sessão de cliente diferente ou um novo nome de trabalho for especificado, o Windows PowerShell criará um novo objeto de trabalho para a nova sessão.

  • Quando você desconecta um PSSession, o estado da sessão é Desconectado e a disponibilidade é Nenhuma.

    O valor da propriedade State é relativo à sessão atual. Portanto, um valor de Desconectado significa que o PSSession não está conectado à sessão atual. No entanto, isso não significa que o PSSession esteja desconectado de todas as sessões. Ele pode estar conectado a uma sessão diferente. Para determinar se você pode se conectar ou se reconectar à sessão, use a propriedade Disponibilidade.

    Um valor de Disponibilidade Nenhum indica que você pode se conectar à sessão. Um valor de Ocupado indica que você não pode se conectar ao PSSession porque ele está conectado a outra sessão.

    Para obter mais informações sobre os valores da propriedade State de sessões, consulte de enumeração RunspaceState na biblioteca MSDN.

    Para obter mais informações sobre os valores da propriedade Availability de sessões, consulte RunspaceAvailability Enumeration.