Receive-PSSession
Obtiene los resultados de los comandos en sesiones desconectadas.
Sintaxis
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 cmdlet Receive-PSSession
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 un Receive-PSSession
además de o en lugar de un comando Connect-PSSession
.
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 cmdlet Disconnect-PSSession
o el parámetroinDisconnectedSession Invoke-Command
. O desconectado involuntariamente por una interrupción de la red.
Si usa el cmdlet Receive-PSSession
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, vea about_Splatting.
Ejemplos
Ejemplo 1: Conectarse 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
El Receive-PSSession
especifica el equipo remoto con el parámetro computerName . El parámetro Name identifica la sesión de 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 ninguna salida 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 cmdlet Receive-PSSession
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 comando Receive-PSSession
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 cmdlet Receive-PSSession
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 cmdlet New-PSSession
crea una sesión en el equipo Server01 y guarda la sesión en la variable $s
. La variable $s
muestra que se abre el de estado de y el de disponibilidad de está disponible. Estos valores indican que está conectado a la sesión y que puede ejecutar comandos en la sesión.
El cmdlet Invoke-Command
ejecuta un script en la sesión de la variable $s
. 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 comando Get-PSSession
para obtener sesiones en el equipo Server01. La salida muestra que la sesión de AD sigue existiendo en el equipo Server01. El state de indica que la sesión de de AD está desconectada. El valor availability de None, indica que la sesión no está conectada a ninguna sesión cliente.
El cmdlet Receive-PSSession
vuelve a conectarse a la sesión de 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 cmdlet Get-PSSession
se usa para comprobar el estado del trabajo. La salida confirma que el cmdlet Receive-PSSession
se ha vuelto a conectar a la sesión de de AD, que ahora está abierta 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 cmdlet Receive-PSSession
para volver a conectarse a 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 cmdlet Invoke-Command
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 amplía 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. Puede establecer el IdleTimeout solo cuando cree el PSSession y cámbielo solo cuando se desconecte de él. No se puede cambiar el valor de IdleTimeout al conectarse a un psSession de o recibir sus resultados. Después de ejecutar el comando, el usuario sale de PowerShell y cierra el equipo.
El siguiente día, 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 variable $s
. El valor de la variable $s
se muestra y muestra que las sesiones están desconectadas, pero no están ocupadas.
El cmdlet Receive-PSSession
se conecta a las sesiones de la variable $s
y obtiene sus resultados.
El comando guarda los resultados en la variable $Results
. Se muestra la variable $s
y se muestra que las sesiones están conectadas y disponibles para los comandos.
El script da como resultado la variable $Results
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 cmdlet New-PSSession
crea la sesión de prueba en el equipo Server01. El comando guarda la sesión en la variable $s
.
El cmdlet Invoke-Command
ejecuta un comando en la sesión en la variable $s
. El comando usa el parámetro AsJob para ejecutar el comando como un trabajo y crea el objeto de trabajo en la sesión actual.
El comando devuelve un objeto de trabajo que se guarda en la variable $j
. La variable $j
muestra el objeto de trabajo.
El objeto de sesión de la variable $s
se envía a la canalización a Disconnect-PSSession
y la sesión está desconectada.
Se muestra la variable $j
y muestra el efecto de desconectar el objeto de trabajo en la variable $j
. El estado del trabajo ahora está desconectado.
El Receive-Job
se ejecuta en el trabajo en la variable $j
. La salida muestra que el trabajo comenzó a devolver la salida antes de la sesión y el trabajo se desconectaron.
El cmdlet Connect-PSSession
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 variable $s2
.
El cmdlet Receive-PSSession
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 variable $j2
. El cmdlet Receive-Job
obtiene los resultados del trabajo en la variable $j
.
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 de, el destino remoto puede devolver una instrucción para redirigir a un URI diferente. 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 MaximumConnectionRedirectionCount sesión. Use el parámetro MaximumRedirection del cmdlet New-PSSessionOption
o establezca la propiedad MaximumConnectionRedirectionCount de la variable de preferencia $PSSessionOption
. El valor predeterminado es 5.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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 la 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 aplicación de una sesión se almacena en la propiedad Runspace.ConnectionInfo.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.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 aceptables para este parámetro son:
- Predeterminado
- Básico
- Credssp
- Digerir
- Kerberos
- Negociar
- NegotiateWithImplicitCredential
El valor predeterminado es Default.
Para obtener más información sobre los valores de este parámetro, vea AuthenticationMechanism Enumeration.
Cautela
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 aumenta el riesgo de seguridad de la operación remota. Si el equipo remoto está en peligro, se pueden usar las credenciales que se pasan a ella para controlar la sesión de red.
Tipo: | AuthenticationMechanism |
Valores aceptados: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Posición: | Named |
Valor predeterminado: | Default |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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 en 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 comando Get-Item
o Get-ChildItem
en la unidad de Cert:
de PowerShell.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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. El valor predeterminado 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:COMPUTERNAME
o localhost.
Tipo: | String |
Alias: | Cn |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 recurso completo para una configuración de 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 obtener más información sobre las configuraciones de sesión, consulte about_Session_Configurations.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Confirm
Le pide confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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 URI debe estar 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, Porty ApplicationName para especificar los valores de URI de conexión.
Los valores válidos para el segmento de transporte de 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.
Tipo: | Uri |
Alias: | URI, CU |
Posición: | 0 |
Valor predeterminado: | http://localhost:5985/WSMAN |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 de PSCredential generado por el cmdlet Get-Credential
. Si escribe un nombre de usuario, se le pedirá que escriba la contraseña.
Las credenciales se almacenan en un objeto de PSCredential de y la contraseña se almacena como SecureString.
Nota
Para obtener más información sobre Protección de datos de secureString, consulte ¿Cómo es secureString?.
Tipo: | PSCredential |
Posición: | Named |
Valor predeterminado: | Current user |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | Int32 |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-InstanceId
Especifica el identificador de instancia de la sesión desconectada. El identificador de instancia es un GUID que identifica de forma única un de PSSession de en un equipo local o remoto. El identificador de instancia se almacena en la propiedad InstanceID de la PSSession.
Tipo: | Guid |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-JobName
Especifica un nombre descriptivo para el trabajo que Receive-PSSession
devuelve.
Receive-PSSession
devuelve un trabajo cuando el valor de 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 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 realiza correctamente, pero el parámetro JobName no tiene ningún efecto.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Name
Especifica el nombre descriptivo de la sesión desconectada.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-OutTarget
Determina cómo se devuelven los resultados de la sesión. Los valores aceptables para este parámetro son:
- 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 a la línea de comandos (sincrónicamente). Si el comando se reanuda o los resultados constan 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 de la 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.
Normalmente, el programa host muestra los objetos devueltos en la línea de comandos sin demora, pero este comportamiento puede variar.
Tipo: | OutTarget |
Valores aceptados: | Default, Host, Job |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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 alternativa podría impedir que el comando se ejecute en todos los equipos.
Tipo: | Int32 |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Session
Especifica la sesión desconectada. Escriba una variable que contenga el psSession de o un comando que crea o obtiene el psSession, como un comando de Get-PSSession
.
Tipo: | PSSession |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 mediante el valor de la variable de preferencia $PSSessionOption
, si se establece. De lo contrario, las opciones establecidas en la configuración de sesión establecen los valores predeterminados.
Los valores de opción de sesión tienen prioridad sobre los valores predeterminados de las sesiones establecidas en la variable de preferencia $PSSessionOption
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, vea about_Preference_Variables. Para obtener más información sobre las configuraciones de sesión, consulte about_Session_Configurations.
Tipo: | PSSessionOption |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si el cmdlet se ejecuta. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar objetos de sesión a este cmdlet, como los objetos devueltos por el cmdlet Get-PSSession
.
Puede canalizar los identificadores de sesión a este cmdlet.
Puede canalizar los identificadores de instancia de las sesiones de este cmdlet.
Puede canalizar los nombres de sesión a este cmdlet.
Salidas
Si el valor o valor predeterminado del parámetro OutTarget es Job
, Receive-PSSession
devuelve un objeto de trabajo.
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 resultados solo de las sesiones desconectadas. 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 OutputBufferingMode opción 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 de modo de almacenamiento en búfer de salida, consulte los artículos de ayuda de los cmdlets new-PSSessionOption y New-PSTransportOption cmdlets.
No se puede cambiar el valor de tiempo de espera de inactividad de un psSession de cuando se conecta a la PSSession o recibe resultados. El parámetro sessionOption de de Receive-PSSession
toma un objeto sessionOption que tiene un valor IdleTimeout. Sin embargo, el valor IdleTimeout del objeto SessionOption y el IdleTimeout valor de la variable $PSSessionOption
se omiten cuando se conecta a un PSSession de o recibe resultados.
- Puede establecer y cambiar el tiempo de espera de inactividad de un PSSession al crear el psSession de, mediante los cmdlets
New-PSSession
oInvoke-Command
y cuando se desconecta del PSSession. - La propiedad IdleTimeout de un 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 inactivas desde el momento en que se desconectan, incluso si los comandos se ejecutan en la sesión desconectada.
Si inicia un trabajo de inicio en una sesión remota con 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 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 entregaron 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 quiere desconectar, use el parámetro InDisconnectedSession del cmdlet Invoke-Command
. Dado que este parámetro impide que los resultados se devuelvan a la sesión actual, todos los resultados están disponibles cuando se vuelve a conectar la sesión.
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. No puede usar el cmdlet Receive-PSSession
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 Receive-Job
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 un 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. Un valor de Disconnected significa que el de PSSession de no está conectado a la sesión actual. Sin embargo, no significa que el de PSSession de esté desconectado de todas las sesiones. Puede estar conectado a otra sesión. Para determinar si puede conectarse o volver a conectarse a la sesión, use la propiedad availability .
- Un valor de Availability de None indica que puede conectarse a la sesión. Un valor de Busy indica que no se puede conectar al PSSession porque está conectado a otra sesión.
- Para obtener más información sobre los valores de la propiedad state de de sesiones, vea RunspaceState.
- Para obtener más información sobre los valores de la propiedad availability de de sesiones, vea RunspaceAvailability.