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
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-Command
pará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: 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
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 ConnectionURI , 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 MaximumConnectionRedirectionCount . Use el parámetro MaximumRedirection del New-PSSessionOption
cmdlet o establezca la propiedad MaximumConnectionRedirectionCount de la $PSSessionOption
variable de preferencia. 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 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 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 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.
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 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:
.
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. 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: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 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.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Confirm
Le solicita su 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 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.
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 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?.
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 una PSSession en un equipo local o remoto. El identificador de instancia se almacena en la propiedad InstanceID de 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 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.
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
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.
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 alternativo podría impedir que el comando se ejecutara 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 psSession o un comando que cree o obtenga la PSSession, como un Get-PSSession
comando.
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 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.
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 se ejecutara el cmdlet. 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 Get-PSSession
cmdlet.
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 el 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
Windows PowerShell incluye los siguientes alias para Receive-PSSession
:
rcsn
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 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 $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 oInvoke-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.