Compartir a través de


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

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

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

Receive-PSSession funciona en PSSessions que se desconectaron intencionadamente, como mediante el uso del cmdlet Disconnect-PSSession o el parámetro InDisconnectedSession del cmdlet Invoke-Command o involuntariamente, como por una interrupción de la red.

Si se usa el cmdlet Receive-PSSession para conectarse a una sesión en la que no hay ningún comando en ejecución o suspendido, Receive-PSSession se conecta a la sesión, pero no devuelve ni resultados ni errores.

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

Este cmdlet se introdujo en Windows PowerShell 3.0.

Ejemplos

Ejemplo 1: Conectarse a una PSSession

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

Este comando usa el cmdlet Receive-PSSession para conectarse a la sesión ITTask en el equipo Server01 y obtener los resultados de los comandos que se estaban ejecutando en dicha sesión.

Como el comando no usa el parámetro OutTarget, el resultado aparece en la línea de comandos.

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

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

Este comando obtiene los resultados de todos los comandos que se ejecutan en todas las sesiones desconectadas en los equipos Server01 y Server02.

Si alguna sesión no estaba desconectada o no ejecuta comandos, Receive-PSSession no se conectará a la sesión y no devolverá ni resultados ni errores.

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

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 el cmdlet Receive-PSSession para obtener los resultados de un script que se estaba ejecutando en la sesión ITTask del equipo 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 con el fin de devolver los resultados como un trabajo, así como el parámetro JobName para especificar un nombre para el trabajo en la sesión reconectada.

El comando usa el parámetro Credential para ejecutar el comando Receive-PSSession mediante los permisos de un administrador de dominio.

El resultado muestra que Receive-PSSession ha devuelto 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

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

En este ejemplo se usa el cmdlet Receive-PSSession para obtener los resultados de un trabajo después de que una interrupción de red cortara una conexión de sesión. Windows PowerShell intenta volver a conectar automáticamente la sesión una vez cada 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.

Ejemplo 5: Volver a conectarse a sesiones 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

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

Ejemplo 6: Ejecución de un trabajo en una sesión 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

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

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 ConnectionURI, el destino remoto puede devolver una instrucción para redirigir a otro URI. De forma predeterminada, Windows PowerShell no redirige las conexiones, pero puede usar este parámetro para habilitarla para redirigir la conexión.

De igual modo, se puede limitar el número de veces que la conexión se redirecciona; para ello, hay que cambiar el valor de la opción de sesión MaximumConnectionRedirectionCount. Utilice el parámetro MaximumRedirection del cmdlet New-PSSessionOption o establezca la propiedad MaximumConnectionRedirectionCount de la variable de preferencia $PSSessionOption. El valor predeterminado es 5.

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

-ApplicationName

Especifica una aplicación. Este cmdlet solo se conecta a las 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, el nombre de la aplicación es WSMan: https://localhost:5985/WSMAN. El nombre de aplicación de una sesión se almacena en la propiedad Runspace.ConnectionInfo.AppName de la sesión.

El valor de este parámetro sirve para seleccionar y filtrar las sesiones. No cambia la aplicación que la sesión utiliza.

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 del usuario en el comando para volver a conectarse a la sesión desconectada. Los valores permitidos para este parámetro son los siguientes:

  • Default
  • Básico
  • 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:None
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. Solo se pueden asignar a cuentas de usuario locales. No funcionan con cuentas de dominio.

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

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 de un equipo. No se admite el uso de caracteres comodín. Para especificar el equipo local, escriba el nombre del equipo, localhost o un punto (.)

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

-ConfigurationName

Se conecta únicamente 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: https://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 de este parámetro sirve para seleccionar y filtrar las sesiones. No cambia la configuración de sesión que la sesión utiliza.

Para obtener más información sobre las configuraciones de sesión, consulte 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 esta cadena es:

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

El valor predeterminado es el siguiente:

https://localhost:5985/WSMAN

Si no se especifica un URI de conexión, se pueden 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 Transport del URI son HTTP y HTTPS. Si especifica un URI de conexión con un segmento 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 Windows PowerShell, especifique el puerto 5985 para HTTP o 5986 para HTTPS.

Si el equipo de destino redirige la conexión a otro URI, Windows PowerShell impide que la redirección se produzca, a menos que se use el parámetro AllowRedirection en el comando.

Type:Uri
Aliases:URI, CU
Position:0
Default value:https://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 Usuario01 o Dominio01\Usuario01. O bien, escriba un objeto PSCredential , como uno generado por el cmdlet Get-Credential. Si escribe un nombre de usuario, este cmdlet le pedirá una contraseña.

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

-Id

Especifica el identificador de la 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 tiene efecto alguno, si la sesión se almacena en el equipo local, pero no estaba conectada 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 el nombre descriptivo del 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, Windows PowerShell vuelve a usar 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, Windows PowerShell crea un 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. Se 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. No obstante, si el comando que se recibe en la sesión desconectada se inició en la sesión actual, el valor predeterminado del parámetro OutTarget es la forma en que el comando se inició. Si el comando se inició como un trabajo, se devuelve como un trabajo de forma predeterminada. Si no, 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 en el equipo remoto que se usa para volver a conectar con la sesión. Para conectarse a un equipo remoto, este 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 de WinRM en el equipo remoto para poder escuchar en ese puerto. Para configurar el agente de escucha, escriba los dos comandos siguientes en el símbolo del sistema de Windows 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 que se establece en el comando se aplica a todos los equipos o sesiones en que dicho comando se ejecuta. 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 la PSSession o un comando que crea u obtiene la PSSession, como un comando de Get-PSSession.

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 cmdlet New-PSSessionOption, 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 con el valor de la variable de preferencia $PSSessionOption, 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 precedencia sobre los valores predeterminados de las sesiones definidos en la variable de preferencia $PSSessionOption y en la configuración de sesión. Sin embargo, no tienen precedencia sobre los valores máximos, las cuotas o los 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 obtener más información sobre las configuraciones de sesión, consulte 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 Windows PowerShell que se transmite por la red. UseSSL es una protección extra 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, pero 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:None
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, como los devueltos por el cmdlet Get-PSSession, a este cmdlet.

Int32

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

Guid

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

String

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

Salidas

System.Management.Automation.Job or PSObject

Este cmdlet devuelve los resultados de los comandos que se ejecutaron en la sesión desconectada, si existe. Si el valor o el valor predeterminado del parámetro OutTarget es Job, Receive-PSSession devuelve un objeto de trabajo. Si no, devuelve los objetos que representan los resultados del comando.

Notas

  • Receive-PSSession obtiene resultados solo de las sesiones que se desconectaron. Solo las sesiones a las que están conectadas o finalizan en los equipos que ejecutan Windows PowerShell 3.0 o versiones posteriores 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 han devuelto a otra sesión, Receive-PSSession no genera ningún resultado.

  • El modo de almacenamiento en búfer de salida de una sesión determina el modo en que los comandos de la sesión van a administrar los resultados cuando la sesión se desconecte. 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 puede recuperar esta salida. Para obtener más información sobre la opción modo de almacenamiento en búfer de salida, consulte los temas 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 la PSSession o 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 variable $PSSessionOption se omiten cuando se conecta a una PSSession o recibe resultados.

    Puede establecer y cambiar el tiempo de espera de inactividad de una PSSession al crear la PSSession, mediante los cmdlets New-PSSession o Invoke-Command , y cuando se desconecta de PSSession.

    La propiedad IdleTimeout de una PSSession es fundamental para las sesiones desconectadas, ya que 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 en una sesión remota mediante el parámetro AsJob del cmdlet Invoke-Command , el objeto de trabajo se crea en la sesión actual, aunque el trabajo se ejecute en la sesión remota. Si se desconecta la sesión remota, el objeto de trabajo en la sesión actual se desconectará del trabajo. El objeto de trabajo sigue conteniendo los resultados que se devolvieron, pero no recibirá nuevos resultados del trabajo en la sesión desconectada.

    Si otro cliente se conecta a la sesión que contiene el trabajo en ejecución, los resultados que se enviaron al objeto de trabajo original en la sesión original no estará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.

    De forma similar, si se inicia un script en una sesión y, a continuación, se desconecta de la sesión, los resultados que el script envíe a la sesión antes de la desconexión no estarán disponibles para otro cliente que se conecte a la sesión en cuestión.

    Para evitar la pérdida de datos en las sesiones que quiera desconectar, use el parámetro InDisconnectedSession del cmdletInvoke-Command. 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 cmdlet Invoke-Command para ejecutar un comando Start-Job en la sesión remota. En este caso, el objeto de trabajo se crea en la sesión remota. El cmdlet Receive-PSSession no se puede usar para obtener los resultados del trabajo. En su lugar, use el cmdlet Connect-PSSession para conectarse a la sesión y, a continuación, use el cmdlet Invoke-Command para ejecutar un comando de Receive-Job en la sesión.

  • Cuando una sesión que contiene un trabajo en ejecución se desconecta y, a continuación, se vuelve a conectar, el objeto de trabajo original se reutilizará solo si el trabajo se ha desconectado y vuelto a conectar a la misma sesión y el comando para la reconexión no especifica un nuevo nombre de trabajo. Si la sesión se vuelve a conectar a otra sesión de cliente o se especifica un nuevo nombre de trabajo, Windows PowerShell crea un 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 relativa a la sesión actual. Por lo tanto, un valor de Disconnected significa que PSSession no está conectado a la sesión actual. Sin embargo, no significa que la PSSession se desconecte de todas las sesiones. Podría estar conectada a una sesión diferente. Para saber si se puede conectar o volver a conectar a la sesión, use la propiedad Availability.

    Un valor de Availability establecido en None indica que se puede conectar 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 Enumeration en MSDN Library.

    Para obtener más información sobre los valores de la propiedad Availability de las sesiones, vea RunspaceAvailability (enumeración).