Receive-PSSession

Obtiene los resultados de los comandos en sesiones desconectadas.

Syntax

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>]

Description

Este cmdlet solo está disponible en la plataforma Windows.

El Receive-PSSession cmdlet obtiene los resultados de los comandos que se ejecutan en sesiones de PowerShell (PSSession) que se desconectaron. Si la sesión está conectada actualmente, Receive-PSSession obtiene los resultados de los comandos que se estaban ejecutando cuando se desconectaba la sesión. Si la sesión sigue desconectada, Receive-PSSession se conecta a la sesión, reanuda los comandos suspendidos y obtiene los resultados de los comandos que se ejecutan en la sesión.

Este cmdlet se introdujo en PowerShell 3.0.

Puede usar además Receive-PSSession de o en lugar de un Connect-PSSession comando. Receive-PSSession puede conectarse a cualquier sesión desconectada o reconectada que se inició en otras sesiones o en otros equipos.

Receive-PSSession funciona en PSSessions que se desconectaron intencionadamente mediante el Disconnect-PSSession cmdlet o el Invoke-Commandparámetro InDisconnectedSession . O desconectado involuntariamente por una interrupción de la red.

Si usa el Receive-PSSession cmdlet para conectarse a una sesión en la que no se ejecuta ni suspende ningún comando, Receive-PSSession se conecta a la sesión, pero no devuelve ningún resultado o error.

Para obtener más información sobre la característica Sesiones desconectadas, consulte about_Remote_Disconnected_Sessions.

Algunos ejemplos usan la expansión para reducir la longitud de línea y mejorar la legibilidad. Para obtener más información, consulte about_Splatting.

Ejemplos

Ejemplo 1: Conectar a una PSSession

Este ejemplo se conecta a una sesión en un equipo remoto y obtiene los resultados de los comandos que se ejecutan en una sesión.

Receive-PSSession -ComputerName Server01 -Name ITTask

Receive-PSSession especifica el equipo remoto con el parámetro ComputerName. El parámetro Name identifica la sesión itTask en el equipo Server01. En el ejemplo se obtienen los resultados de los comandos que se estaban ejecutando en la sesión de ITTask.

Dado que el comando no usa el parámetro OutTarget , los resultados aparecen en la línea de comandos.

Ejemplo 2: Obtención de resultados de todos los comandos en sesiones desconectadas

En este ejemplo se obtienen los resultados de todos los comandos que se ejecutan en todas las sesiones desconectadas en dos equipos remotos.

Si alguna sesión no estaba desconectada o no ejecuta comandos, Receive-PSSession no se conecta a la sesión y no devuelve ningún resultado o error.

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

Get-PSSession usa el parámetro ComputerName para especificar los equipos remotos. Los objetos se envían por la canalización a Receive-PSSession.

Ejemplo 3: Obtener los resultados de un script que se ejecuta en una sesión

En este ejemplo se usa el Receive-PSSession cmdlet para obtener los resultados de un script que se estaba ejecutando en la sesión de un equipo remoto.

$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

El comando usa los parámetros ComputerName y Name para identificar la sesión desconectada. Usa el parámetro OutTarget con un valor de Job para dirigir Receive-PSSession para devolver los resultados como un trabajo. El parámetro JobName especifica un nombre para el trabajo en la sesión reconectada. El parámetro Credential ejecuta el Receive-PSSession comando mediante los permisos de un administrador de dominio.

La salida muestra que Receive-PSSession devolvió los resultados como un trabajo en la sesión actual. Para obtener los resultados del trabajo, use un comando .Receive-Job

Ejemplo 4: Obtención de resultados después de una interrupción de la red

En este ejemplo se usa el Receive-PSSession cmdlet para obtener los resultados de un trabajo después de que una interrupción de la red interrumpa una conexión de sesión. PowerShell intenta volver a conectar automáticamente la sesión una vez por segundo durante los próximos cuatro minutos y abandona el esfuerzo solo si se produce un error en todos los intentos del intervalo de cuatro minutos.

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

El New-PSSession cmdlet crea una sesión en el equipo Server01 y guarda la sesión en la $s variable . La $s variable muestra que el estado está abierto y la disponibilidad está disponible. Estos valores indican que está conectado a la sesión y que puede ejecutar comandos en la sesión.

El Invoke-Command cmdlet ejecuta un script en la sesión de la $s variable . El script comienza a ejecutarse y devolver datos, pero se produce una interrupción de la red que interrumpe la sesión. El usuario tiene que salir de la sesión y reiniciar el equipo local.

Cuando se reinicia el equipo, el usuario inicia PowerShell y ejecuta un Get-PSSession comando para obtener sesiones en el equipo Server01. La salida muestra que la sesión de AD sigue existiendo en el equipo Server01. El estado indica que la sesión de AD está desconectada. El valor availability de None indica que la sesión no está conectada a ninguna sesión de cliente.

El Receive-PSSession cmdlet se vuelve a conectar a la sesión de AD y obtiene los resultados del script que se ejecutó en la sesión. El comando usa el parámetro OutTarget para solicitar los resultados en un trabajo denominado ADJob. El comando devuelve un objeto de trabajo y la salida indica que el script todavía se está ejecutando.

El Get-PSSession cmdlet se usa para comprobar el estado del trabajo. La salida confirma que el Receive-PSSession cmdlet se ha vuelto a conectar a la sesión de AD , que ahora está abierto y disponible para los comandos. Además, el script reanudó la ejecución y obtiene los resultados del script.

Ejemplo 5: Volver a conectarse a sesiones desconectadas

En este ejemplo se usa el Receive-PSSession cmdlet para volver a conectarse a las sesiones que se desconectaron intencionadamente y obtener los resultados de los trabajos que se estaban ejecutando en las sesiones.

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

El Invoke-Command cmdlet ejecuta un script en tres equipos remotos. Dado que el script recopila y resume los datos de varias bases de datos, a menudo tarda un tiempo prolongado en finalizar el script. El comando usa el parámetro InDisconnectedSession que inicia los scripts y, a continuación, desconecta inmediatamente las sesiones. El parámetro SessionOption extiende el valor IdleTimeout de la sesión desconectada. Las sesiones desconectadas se consideran inactivas desde el momento en que se desconectan. Es importante establecer el tiempo de espera de inactividad durante mucho tiempo para que los comandos se puedan completar y pueda volver a conectarse a la sesión. Solo puede establecer IdleTimeout cuando cree la PSSession y cámbiela solo cuando se desconecte de ella. No se puede cambiar el valor IdleTimeout al conectarse a una PSSession ni recibir sus resultados. Después de ejecutar el comando, el usuario sale de PowerShell y cierra el equipo.

El día siguiente, el usuario reanuda Windows, inicia PowerShell y usa Get-PSSession para obtener las sesiones en las que se estaban ejecutando los scripts. El comando identifica las sesiones por el nombre del equipo, el nombre de la sesión y el nombre de la configuración de la sesión y guarda las sesiones en la $s variable . El valor de la $s variable se muestra y muestra que las sesiones están desconectadas, pero no están ocupadas.

El Receive-PSSession cmdlet se conecta a las sesiones de la $s variable y obtiene sus resultados. El comando guarda los resultados en la $Results variable . La $s variable se muestra y muestra que las sesiones están conectadas y disponibles para los comandos.

Los resultados del script en la $Results variable se muestran en la consola de PowerShell. Si alguno de los resultados es inesperado, el usuario puede ejecutar comandos en las sesiones para investigar la causa principal.

Ejemplo 6: Ejecución de un trabajo en una sesión desconectada

En este ejemplo se muestra lo que sucede con un trabajo que se ejecuta en una sesión desconectada.

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

El New-PSSession cmdlet crea la sesión de prueba en el equipo Server01. El comando guarda la sesión en la variable $s.

El Invoke-Command cmdlet ejecuta un comando en la sesión de la $s variable . El comando usa el parámetro AsJob para ejecutar el comando como trabajo y crea el objeto de trabajo en la sesión actual. El comando devuelve un objeto de trabajo que se guarda en la $j variable . La $j variable muestra el objeto de trabajo.

El objeto de sesión de la $s variable se envía a la canalización a Disconnect-PSSession y la sesión está desconectada.

La $j variable se muestra y muestra el efecto de desconectar el objeto de trabajo en la $j variable. El estado del trabajo ahora está desconectado.

Receive-Job se ejecuta en el trabajo de la $j variable . La salida muestra que el trabajo comenzó a devolver la salida antes de la sesión y el trabajo se desconectaron.

El Connect-PSSession cmdlet se ejecuta en la misma sesión de cliente. El comando se vuelve a conectar a la sesión de prueba en el equipo Server01 y guarda la sesión en la $s2 variable .

El Receive-PSSession cmdlet obtiene los resultados del trabajo que se estaba ejecutando en la sesión. Dado que el comando se ejecuta en la misma sesión, Receive-PSSession devuelve los resultados como un trabajo de forma predeterminada y reutiliza el mismo objeto de trabajo. El comando guarda el trabajo en la $j2 variable . El Receive-Job cmdlet obtiene los resultados del trabajo en la $j variable .

Parámetros

-AllowRedirection

Indica que este cmdlet permite el redireccionamiento de esta conexión a un identificador uniforme de recursos (URI) alternativo.

Cuando se usa el parámetro Conectar ionURI, el destino remoto puede devolver una instrucción para redirigir a otro URI. De forma predeterminada, PowerShell no redirige las conexiones, pero puede usar este parámetro para permitir que redirija la conexión.

También puede limitar el número de veces que se redirige la conexión cambiando el valor de la opción de sesión Maximum Conectar ionRedirectionCount. Use el parámetro MaximumRedirection del New-PSSessionOption cmdlet o establezca la propiedad Maximum Conectar ionRedirectionCount de la $PSSessionOption variable de preferencia. El valor predeterminado es 5.

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

-ApplicationName

Especifica una aplicación. Este cmdlet solo se conecta a sesiones que usan la aplicación especificada.

Escriba el segmento de nombre de aplicación del URI de conexión. Por ejemplo, en el siguiente URI de conexión, WSMan es el nombre de la aplicación: http://localhost:5985/WSMAN.

El nombre de la aplicación de una sesión se almacena en Runspace.ConectarPropiedad ionInfo.AppName de la sesión.

El valor del parámetro se usa para seleccionar y filtrar sesiones. No cambia la aplicación que usa la sesión.

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

-Authentication

Especifica el mecanismo que se usa para autenticar las credenciales de usuario en el comando para volver a conectarse a una sesión desconectada. Los valores permitidos para este parámetro son los siguientes:

  • Valor predeterminado
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

El valor predeterminado es Default.

Para obtener más información sobre los valores de este parámetro, vea AuthenticationMechanism (enumeración).

Precaución

La autenticación del proveedor de soporte técnico de seguridad de credenciales (CredSSP), en la que las credenciales de usuario se pasan a un equipo remoto para autenticarse, está diseñada para comandos que requieren autenticación en más de un recurso, como el acceso a un recurso compartido de red remoto. Este mecanismo el riesgo de seguridad de la operación remota. Si el equipo remoto se ve comprometido, las credenciales que se pasen a él se pueden utilizar para controlar la sesión de red.

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

Especifica el certificado de clave pública digital (X509) de una cuenta de usuario que tiene permiso para conectarse a la sesión desconectada. Escriba la huella digital del certificado.

Los certificados se usan para la autenticación basada en certificados de cliente. Los certificados solo se pueden asignar a cuentas de usuario locales y no funcionan con cuentas de dominio.

Para obtener una huella digital de certificado, use un Get-Item comando o Get-ChildItem en la unidad de PowerShell Cert: .

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

-ComputerName

Especifica el equipo en el que se almacena la sesión desconectada. Las sesiones se almacenan en el equipo que se encuentra en el lado servidor o reciben el final de una conexión. La opción predeterminada es el equipo local.

Escriba el nombre NetBIOS, una dirección IP o un nombre de dominio completo (FQDN) de un equipo. No se permiten caracteres comodín. Para especificar el equipo local, escriba el nombre del equipo, un punto (.), $env:COMPUTERNAMEo localhost.

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Especifica el nombre de una configuración de sesión. Este cmdlet solo se conecta a las sesiones que usan la configuración de sesión especificada.

Escriba un nombre de configuración o el URI de un recurso completo para configurar una sesión. Si especifica solo el nombre de configuración, se antepone el siguiente URI de esquema:

http://schemas.microsoft.com/powershell.

El nombre de configuración de una sesión se almacena en la propiedad ConfigurationName de la sesión.

El valor del parámetro se usa para seleccionar y filtrar sesiones. No cambia la configuración de sesión que usa la sesión.

Para más información sobre las configuraciones de sesión, vea about_Session_Configurations.

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

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

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

-ConnectionUri

Especifica un URI que define el punto de conexión que se usa para volver a conectarse a la sesión desconectada.

El identificador URI debe ser completo. El formato de la cadena es el siguiente:

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

El valor predeterminado es el siguiente:

http://localhost:5985/WSMAN

Si no especifica un URI de conexión, puede usar los parámetros UseSSL, ComputerName, Port y ApplicationName para especificar los valores de URI de conexión.

Los valores válidos para el segmento Transporte del URI son HTTP y HTTPS. Si especifica un URI de conexión con un segmento de transporte, pero no especifica un puerto, la sesión se crea con puertos estándar: 80 para HTTP y 443 para HTTPS. Para usar los puertos predeterminados para la comunicación remota de PowerShell, especifique el puerto 5985 para HTTP o 5986 para HTTPS.

Si el equipo de destino redirige la conexión a un URI diferente, PowerShell impide el redireccionamiento a menos que use el parámetro AllowRedirection en el comando.

Type:Uri
Aliases:URI, CU
Position:0
Default value:http://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Especifica una cuenta de usuario que tiene permiso para conectarse a la sesión desconectada. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como User01 o Domain01\User01, o escriba un objeto PSCredential generado por el Get-Credential cmdlet . Si escribe un nombre de usuario, se le pedirá que escriba la contraseña.

Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.

Nota:

Para obtener más información sobre la protección de datos SecureString , consulte ¿Cómo es secure is SecureString?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Especifica el identificador de una sesión desconectada. El parámetro Id solo funciona cuando la sesión desconectada se conectó anteriormente a la sesión actual.

Este parámetro es válido, pero no efectivo, cuando la sesión se almacena en el equipo local, pero no se ha conectado a la sesión actual.

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Especifica el identificador de instancia de la sesión desconectada. El identificador de instancia es un GUID que identifica de forma única una PSSession en un equipo local o remoto. El identificador de instancia se almacena en la propiedad InstanceID de PSSession.

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

-JobName

Especifica un nombre descriptivo para el trabajo que Receive-PSSession devuelve.

Receive-PSSession devuelve un trabajo cuando el valor del parámetro OutTarget es Job o el trabajo que se ejecuta en la sesión desconectada se inició en la sesión actual.

Si el trabajo que se ejecuta en la sesión desconectada se inició en la sesión actual, PowerShell reutiliza el objeto de trabajo original en la sesión y omite el valor del parámetro JobName .

Si el trabajo que se ejecuta en la sesión desconectada se inició en otra sesión, PowerShell crea un nuevo objeto de trabajo. Usa un nombre predeterminado, pero se puede usar este parámetro para cambiar el nombre.

Si el valor predeterminado o el valor explícito del parámetro OutTarget no es Job, el comando se ejecuta correctamente, pero el parámetro JobName no tiene ningún efecto.

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

-Name

Especifica el nombre descriptivo de la sesión desconectada.

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

-OutTarget

Indica cómo se van a devolver los resultados de la sesión. Los valores permitidos para este parámetro son los siguientes:

  • Trabajo. devuelve los resultados de forma asincrónica en un objeto de trabajo. Puede usar el parámetro JobName para especificar un nombre o un nombre nuevo para el trabajo.
  • Host. devuelve los resultados en la línea de comandos (sincrónicamente). Si el comando se está reanudando o los resultados se componen de un gran número de objetos, es posible que la respuesta se retrase.

El valor predeterminado del parámetro OutTarget es Host. Si el comando que se recibe en una sesión desconectada se inició en la sesión actual, el valor predeterminado del parámetro OutTarget es el formulario en el que se inició el comando. Si el comando se inició como un trabajo, de forma predeterminada, se devuelve como un trabajo. De lo contrario, se devuelve al programa host de forma predeterminada.

El programa host suele mostrar los objetos devueltos en la línea de comandos sin demora, pero este comportamiento puede variar.

Type:OutTarget
Accepted values:Default, Host, Job
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

Especifica el puerto de red del equipo remoto que se usa para volver a conectarse a la sesión. Para conectarse a un equipo remoto, debe estar escuchando en el puerto que usa la conexión. Los puertos predeterminados son 5985, que es el puerto WinRM para HTTP y 5986, que es el puerto winRM para HTTPS.

Antes de usar un puerto alternativo, debe configurar el agente de escucha winRM en el equipo remoto para que escuche en ese puerto. Para configurar el agente de escucha, escriba los dos comandos siguientes en el símbolo del sistema de PowerShell:

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

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

No use el parámetro Port a menos que sea necesario. El puerto establecido en el comando se aplica a todos los equipos o sesiones en los que se ejecuta el comando. Una configuración de puerto alternativo podría impedir que el comando se ejecutara en todos los equipos.

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

-Session

Especifica la sesión desconectada. Escriba una variable que contenga psSession o un comando que cree o obtenga la PSSession, como un Get-PSSession comando.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

Especifica opciones avanzadas para la sesión. Escriba un objeto SessionOption , como uno que cree mediante el New-PSSessionOption cmdlet o una tabla hash en la que las claves son nombres de opción de sesión y los valores son valores de opción de sesión.

Los valores predeterminados de las opciones se determinan mediante el valor de la $PSSessionOption variable de preferencia, si se establece. De lo contrario, los valores predeterminados se establecerán mediante las opciones establecidas en la configuración de sesión.

Los valores de opción de sesión tienen prioridad sobre los valores predeterminados de las sesiones establecidas en la $PSSessionOption variable de preferencia y en la configuración de la sesión. Sin embargo, no tienen prioridad sobre los valores máximos, cuotas o límites establecidos en la configuración de sesión.

Para obtener una descripción de las opciones de sesión que incluye los valores predeterminados, consulte New-PSSessionOption. Para obtener información sobre la variable de preferencia de $PSSessionOption , consulte about_Preference_Variables. Para más información sobre las configuraciones de sesión, vea about_Session_Configurations.

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

-UseSSL

Indica que este cmdlet usa el protocolo Capa de sockets seguros (SSL) para conectarse a la sesión desconectada. De forma predeterminada, no se usa SSL.

WS-Management cifra todo el contenido de PowerShell transmitido a través de la red. UseSSL es una protección adicional que envía los datos a través de una conexión HTTPS en lugar de una conexión HTTP.

Si usa este parámetro y SSL no está disponible en el puerto que se usa para el comando, se produce un error en el comando.

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

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

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

Entradas

PSSession

Puede canalizar objetos de sesión a este cmdlet, como los objetos devueltos por el Get-PSSession cmdlet.

Int32

Puede canalizar los identificadores de sesión a este cmdlet.

Guid

Puede canalizar los identificadores de instancia de las sesiones de este cmdlet.

String

Puede canalizar los nombres de sesión a este cmdlet.

Salidas

Job

Si el valor o el valor predeterminado del parámetro OutTarget es Job, Receive-PSSession devuelve un objeto de trabajo.

PSObject

Este cmdlet devuelve los resultados de los comandos que se ejecutaron en la sesión desconectada, si existe.

Notas

PowerShell incluye los siguientes alias para Receive-PSSession:

  • Todas las plataformas:
    • rcsn

Este cmdlet solo está disponible en plataformas Windows.

Receive-PSSession obtiene los resultados solo de las sesiones que se desconectaron. Solo las sesiones conectadas a equipos que ejecutan PowerShell 3.0 o versiones posteriores solo se pueden desconectar y volver a conectar.

Si los comandos que se estaban ejecutando en la sesión desconectada no generaron resultados o si los resultados ya se devolvieron a otra sesión, Receive-PSSession no genera ninguna salida.

El modo de almacenamiento en búfer de salida de una sesión determina cómo administran los comandos de la sesión cuando se desconecta la sesión. Cuando el valor de la opción OutputBufferingMode de la sesión es Drop y el búfer de salida está lleno, el comando comienza a eliminar la salida. Receive-PSSession no se puede recuperar esta salida. Para obtener más información sobre la opción del modo de almacenamiento en búfer de salida, consulte los artículos de ayuda de los cmdlets New-PSSessionOption y New-PSTransportOption .

No puede cambiar el valor de tiempo de espera de inactividad de una PSSession cuando se conecta a PSSessiono recibe resultados. El parámetro SessionOption de Receive-PSSession toma un objeto SessionOption que tiene un valor IdleTimeout . Sin embargo, el valor IdleTimeout del objeto SessionOption y el valor IdleTimeout de la $PSSessionOption variable se omiten cuando se conecta a una PSSession o a la recepción de resultados.

  • Puede establecer y cambiar el tiempo de espera de inactividad de una PSSession al crear la PSSession, mediante los New-PSSession cmdlets o Invoke-Command y cuando se desconecta de PSSession.
  • La propiedad IdleTimeout de una PSSession es fundamental para las sesiones desconectadas porque determina cuánto tiempo se mantiene una sesión desconectada en el equipo remoto. Las sesiones desconectadas se consideran como inactivas desde el momento en que se desconectan, aun cuando haya comandos ejecutándose en la sesión desconectada.

Si inicia un trabajo de inicio en una sesión remota mediante el parámetro AsJob del Invoke-Command cmdlet , el objeto de trabajo se crea en la sesión actual, aunque el trabajo se ejecute en la sesión remota. Si desconecta la sesión remota, el objeto de trabajo de la sesión actual se desconecta del trabajo. El objeto de trabajo contiene los resultados devueltos a él, pero no recibe nuevos resultados del trabajo en la sesión desconectada.

Si un cliente diferente se conecta a la sesión que contiene el trabajo en ejecución, los resultados que se entregaron al objeto de trabajo original en la sesión original no están disponibles en la sesión recién conectada. Solo los resultados que no se enviaron al objeto de trabajo original están disponibles en la sesión reconectada.

Del mismo modo, si inicia un script en una sesión y, a continuación, se desconecta de la sesión, los resultados que el script entrega a la sesión antes de desconectar no están disponibles para otro cliente que se conecta a la sesión.

Para evitar la pérdida de datos en sesiones que pretende desconectar, use el parámetro InDisconnectedSession del Invoke-Command cmdlet . Dado que este parámetro impide que los resultados se devuelvan a la sesión actual, todos los resultados estarán disponibles cuando la sesión se vuelva a conectar.

También puede evitar la pérdida de datos mediante el Invoke-Command cmdlet para ejecutar un Start-Job comando en la sesión remota. En este caso, el objeto de trabajo se crea en la sesión remota. No puede usar el Receive-PSSession cmdlet para obtener los resultados del trabajo. En su lugar, use el Connect-PSSession cmdlet para conectarse a la sesión y, a continuación, use el Invoke-Command cmdlet para ejecutar un Receive-Job comando en la sesión.

Cuando se desconecta una sesión que contiene un trabajo en ejecución y, a continuación, se vuelve a conectar, el objeto de trabajo original solo se reutiliza si el trabajo está desconectado y se vuelve a conectar a la misma sesión, y el comando para volver a conectarse no especifica un nuevo nombre de trabajo. Si se vuelve a conectar la sesión a otra sesión de cliente o se especifica un nuevo nombre de trabajo, PowerShell crea un nuevo objeto de trabajo para la nueva sesión.

Cuando se desconecta una PSSession, el estado de sesión es Desconectado y la disponibilidad es None.

  • El valor de la propiedad State es relativo a la sesión actual. Un valor de Disconnected significa que PSSession no está conectado a la sesión actual. Sin embargo, no significa que PSSession se desconecte de todas las sesiones. Podría estar conectada a una sesión diferente. Para determinar si puede conectarse o volver a conectarse a la sesión, use la propiedad Availability .
  • Un valor de Disponibilidad de None indica que puede conectarse a la sesión. Un valor de Busy indica que no se puede conectar a PSSession porque está conectado a otra sesión.
  • Para obtener más información sobre los valores de la propiedad State de las sesiones, vea RunspaceState.
  • Para obtener más información sobre los valores de la propiedad Availability de las sesiones, vea RunspaceAvailability.