Receive-PSSession

Ottiene i risultati dei comandi nelle sessioni disconnesse

Sintassi

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

Descrizione

Questo cmdlet è disponibile solo nella piattaforma Windows.

Il Receive-PSSession cmdlet ottiene i risultati dei comandi in esecuzione nelle sessioni di PowerShell (PSSession) disconnesse. Se la sessione è attualmente connessa, Receive-PSSession ottiene i risultati dei comandi in esecuzione quando la sessione è stata disconnessa. Se la sessione è ancora disconnessa, Receive-PSSession si connette alla sessione, riprende tutti i comandi sospesi e ottiene i risultati dei comandi in esecuzione nella sessione.

Questo cmdlet è stato introdotto in PowerShell 3.0.

È possibile usare un oggetto Receive-PSSession oltre a o invece di un Connect-PSSession comando. Receive-PSSession può connettersi a qualsiasi sessione disconnessa o riconnessa avviata in altre sessioni o in altri computer.

Receive-PSSession funziona sulle sessioni PSSession disconnesse intenzionalmente usando il Disconnect-PSSession cmdlet o il Invoke-Commandparametro InDisconnectedSession . O disconnesso involontariamente da un'interruzione di rete.

Se si usa il Receive-PSSession cmdlet per connettersi a una sessione in cui non sono in esecuzione o sospesi comandi, Receive-PSSession si connette alla sessione, ma non restituisce alcun output o errori.

Per altre informazioni sulla funzionalità Sessioni disconnesse, vedere about_Remote_Disconnected_Sessions.

Alcuni esempi usano lo splatting per ridurre la lunghezza della linea e migliorare la leggibilità. Per altre informazioni, vedere about_Splatting.

Esempio

Esempio 1: Connessione a una sessione PSSession

Questo esempio si connette a una sessione in un computer remoto e ottiene i risultati dei comandi in esecuzione in una sessione.

Receive-PSSession -ComputerName Server01 -Name ITTask

Specifica Receive-PSSession il computer remoto con il parametro ComputerName . Il parametro Name identifica la sessione ITTask nel computer Server01. L'esempio ottiene i risultati dei comandi in esecuzione nella sessione ITTask.

Poiché il comando non usa il parametro OutTarget , i risultati vengono visualizzati nella riga di comando.

Esempio 2: Ottenere i risultati di tutti i comandi nelle sessioni disconnesse

In questo esempio vengono ottenuti i risultati di tutti i comandi in esecuzione in tutte le sessioni disconnesse in due computer remoti.

Se una sessione non è stata disconnessa o non esegue comandi, Receive-PSSession non si connette alla sessione e non restituisce alcun output o errori.

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

Get-PSSession utilizza il parametro ComputerName per specificare i computer remoti. Gli oggetti vengono inviati alla pipeline a Receive-PSSession.

Esempio 3: Ottenere i risultati di uno script in esecuzione in una sessione

In questo esempio viene usato il Receive-PSSession cmdlet per ottenere i risultati di uno script in esecuzione nella sessione di un computer 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

Il comando usa i parametri ComputerName e Name per identificare la sessione disconnessa. Usa il parametro OutTarget con un valore Job per indirizzare Receive-PSSession la restituzione dei risultati come processo. Il parametro JobName specifica un nome per il processo nella sessione riconnessa. Il parametro Credential esegue il Receive-PSSession comando usando le autorizzazioni di un amministratore di dominio.

L'output mostra che Receive-PSSession ha restituito i risultati come processo nella sessione corrente. Per ottenere i risultati del processo, usare un Receive-Job comando

Esempio 4: Ottenere risultati dopo un'interruzione della rete

Questo esempio usa il Receive-PSSession cmdlet per ottenere i risultati di un processo dopo un'interruzione della rete interrompe una connessione di sessione. PowerShell tenta automaticamente di riconnettere la sessione una volta al secondo per i quattro minuti successivi e abbandona lo sforzo solo se tutti i tentativi nell'intervallo di quattro minuti hanno esito negativo.

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

Il New-PSSession cmdlet crea una sessione nel computer Server01 e salva la sessione nella $s variabile . La $s variabile visualizza che lo stato è Aperto e la disponibilità è Disponibile. Questi valori indicano che si è connessi alla sessione ed è possibile eseguire i comandi nella sessione.

Il Invoke-Command cmdlet esegue uno script nella sessione nella $s variabile . Lo script inizia a eseguire e restituire i dati, ma si verifica un'interruzione della rete che interrompe la sessione. L'utente deve uscire dalla sessione e riavviare il computer locale.

Quando il computer viene riavviato, l'utente avvia PowerShell ed esegue un Get-PSSession comando per ottenere sessioni nel computer Server01. L'output mostra che la sessione di Active Directory esiste ancora nel computer Server01. Lo stato indica che la sessione di Active Directory è disconnessa. Il valore Di disponibilità none indica che la sessione non è connessa ad alcuna sessione client.

Il Receive-PSSession cmdlet si riconnette alla sessione di Active Directory e ottiene i risultati dello script eseguito nella sessione. Il comando usa il parametro OutTarget per richiedere i risultati in un processo denominato ADJob. Il comando restituisce un oggetto processo e l'output indica che lo script è ancora in esecuzione.

Il Get-PSSession cmdlet viene usato per controllare lo stato del processo. L'output conferma che il Receive-PSSession cmdlet si riconnette alla sessione di ACTIVE Directory , che è ora aperta e disponibile per i comandi. E lo script ha ripreso l'esecuzione e sta ottenendo i risultati dello script.

Esempio 5: Riconnettersi alle sessioni disconnesse

In questo esempio viene usato il Receive-PSSession cmdlet per riconnettersi alle sessioni disconnesse intenzionalmente e ottenere i risultati dei processi in esecuzione nelle sessioni.

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

Il Invoke-Command cmdlet esegue uno script in tre computer remoti. Poiché lo script raccoglie e riepiloga i dati da più database, spesso richiede un tempo prolungato per il completamento dello script. Il comando usa il parametro InDisconnectedSession che avvia gli script e quindi disconnette immediatamente le sessioni. Il parametro SessionOption estende il valore IdleTimeout della sessione disconnessa. Le sessioni disconnesse vengono considerate inattive dal momento in cui sono disconnesse. È importante impostare il timeout di inattività per un periodo di tempo sufficiente in modo che i comandi possano essere completati ed è possibile riconnettersi alla sessione. È possibile impostare IdleTimeout solo quando si crea la sessione PSSession e modificarla solo quando si disconnette da esso. Non è possibile modificare il valore IdleTimeout quando ci si connette a una sessione PSSession o si ricevono i risultati. Dopo aver eseguito il comando, l'utente esce da PowerShell e chiude il computer.

Il giorno successivo, l'utente riprende Windows, avvia PowerShell e usa Get-PSSession per ottenere le sessioni in cui gli script erano in esecuzione. Il comando identifica le sessioni in base al nome del computer, al nome della sessione e al nome della configurazione della sessione e salva le sessioni nella $s variabile. Il valore della $s variabile viene visualizzato e mostra che le sessioni sono disconnesse, ma non sono occupate.

Il Receive-PSSession cmdlet si connette alle sessioni nella $s variabile e ottiene i risultati. Il comando salva i risultati nella $Results variabile. La $s variabile viene visualizzata e mostra che le sessioni sono connesse e disponibili per i comandi.

I risultati dello $Results script nella variabile vengono visualizzati nella console di PowerShell. Se uno dei risultati è imprevisto, l'utente può eseguire comandi nelle sessioni per analizzare la causa radice.

Esempio 6: Esecuzione di un processo in una sessione disconnessa

Questo esempio mostra cosa accade a un processo in esecuzione in una sessione disconnessa.

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

Il New-PSSession cmdlet crea la sessione test nel computer Server01. Il comando salva la sessione nella variabile $s.

Il Invoke-Command cmdlet esegue un comando nella sessione nella $s variabile . Il comando usa il parametro AsJob per eseguire il comando come processo e crea l'oggetto processo nella sessione corrente. Il comando restituisce un oggetto processo salvato nella $j variabile . La $j variabile visualizza l'oggetto processo.

L'oggetto sessione nella $s variabile viene inviato nella pipeline a Disconnect-PSSession e la sessione viene disconnessa.

La $j variabile viene visualizzata e mostra l'effetto della disconnessione dell'oggetto processo nella $j variabile . Lo stato del processo è ora Disconnesso.

viene Receive-Job eseguito nel processo nella $j variabile . L'output mostra che il processo ha iniziato a restituire l'output prima della sessione e che il processo è stato disconnesso.

Il Connect-PSSession cmdlet viene eseguito nella stessa sessione client. Il comando si riconnette alla sessione di test nel computer Server01 e salva la sessione nella $s2 variabile .

Il Receive-PSSession cmdlet ottiene i risultati del processo in esecuzione nella sessione. Poiché il comando viene eseguito nella stessa sessione, Receive-PSSession restituisce i risultati come processo per impostazione predefinita e riutilizza lo stesso oggetto processo. Il comando salva il processo nella $j2 variabile. Il Receive-Job cmdlet ottiene i risultati del processo nella $j variabile .

Parametri

-AllowRedirection

Indica che questo cmdlet consente il reindirizzamento di questa connessione a un URI (Uniform Resource Identifier) alternativo.

Quando si usa il parametro Connessione ionURI, la destinazione remota può restituire un'istruzione per il reindirizzamento a un URI diverso. Per impostazione predefinita, PowerShell non reindirizza le connessioni, ma è possibile usare questo parametro per abilitarlo per reindirizzare la connessione.

È anche possibile limitare il numero di reindirizzamenti della connessione modificando il valore dell'opzione di sessione Maximum Connessione ionRedirectionCount. Utilizzare il parametro MaximumRedirection del New-PSSessionOption cmdlet o impostare la proprietà Maximum Connessione ionRedirectionCount della $PSSessionOption variabile di preferenza. Il valore predefinito è 5.

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

-ApplicationName

Specifica un'applicazione. Questo cmdlet si connette solo alle sessioni che usano l'applicazione specificata.

Immettere il segmento dell'URI di connessione corrispondente al nome dell'applicazione. Nell'URI di connessione seguente, ad esempio, WSMan è il nome dell'applicazione: http://localhost:5985/WSMAN.

Il nome dell'applicazione di una sessione viene archiviato in Runspace.ConnessioneProprietà ionInfo.AppName della sessione.

Il valore del parametro viene usato per selezionare e filtrare le sessioni. Non modifica l'applicazione usata dalla sessione.

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

-Authentication

Specifica il meccanismo usato per autenticare le credenziali utente nel comando per riconnettersi a una sessione disconnessa. I valori validi per questo parametro sono:

  • Default
  • Di base
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Il valore predefinito è Default.

Per altre informazioni sui valori di questo parametro, vedere AuthenticationMechanism Enumeration.

Attenzione

L'autenticazione credSSP (Credential Security Support Provider), in cui le credenziali utente vengono passate a un computer remoto da autenticare, è progettato per i comandi che richiedono l'autenticazione su più di una risorsa, ad esempio l'accesso a una condivisione di rete remota. Questo meccanismo aumenta il rischio per la sicurezza dell'operazione remota. Se infatti il computer remoto viene compromesso, le credenziali che gli vengono passate possono essere usate per controllare la sessione di rete.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Specifica il certificato di chiave pubblica digitale (X509) di un account utente che dispone dell'autorizzazione per la connessione alla sessione disconnessa. Immettere l'identificazione personale del certificato.

I certificati vengono usati nell'autenticazione basata sui certificati client. I certificati possono essere mappati solo agli account utente locali e non funzionano con gli account di dominio.

Per ottenere un'identificazione personale del certificato, usare un Get-Item comando o Get-ChildItem nell'unità di PowerShell Cert: .

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

-ComputerName

Specifica il computer in cui è archiviata la sessione disconnessa. Le sessioni vengono archiviate nel computer sul lato server o che ricevono la fine di una connessione. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo (FQDN) di un computer. I caratteri jolly non sono consentiti. Per specificare il computer locale, digitare il nome del computer, un punto (.), $env:COMPUTERNAMEo localhost.

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

-ConfigurationName

Specifica il nome di una configurazione di sessione. Questo cmdlet si connette solo alle sessioni che usano la configurazione di sessione specificata.

Immettere un nome di configurazione o l'URI di risorsa completo per una configurazione di sessione. Se si specifica solo il nome di configurazione, viene anteporto l'URI dello schema seguente:

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

Il nome di configurazione di una sessione viene archiviato nella proprietà ConfigurationName della sessione.

Il valore del parametro viene usato per selezionare e filtrare le sessioni. Non modifica la configurazione della sessione usata dalla sessione.

Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.

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

-Confirm

Richiede conferma prima di eseguire il cmdlet.

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

-ConnectionUri

Specifica un URI che definisce l'endpoint di connessione utilizzato per riconnettersi alla sessione disconnessa.

L'URI deve essere completo. Il formato della stringa è il seguente:

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

Il valore predefinito è il seguente:

http://localhost:5985/WSMAN

Se non si specifica un URI di connessione, è possibile usare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori dell'URI di connessione.

I valori validi per il segmento Transport dell'URI sono HTTP e HTTPS. Se si specifica un URI di connessione con un segmento di trasporto, ma non si specifica una porta, la sessione viene creata con porte standard: 80 per HTTP e 443 per HTTPS. Per usare le porte predefinite per la comunicazione remota di PowerShell, specificare la porta 5985 per HTTP o 5986 per HTTPS.

Se il computer di destinazione reindirizza la connessione a un URI diverso, PowerShell impedisce il reindirizzamento a meno che non si usi il parametro AllowRedirection nel comando .

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

-Credential

Specifica un account utente che dispone dell'autorizzazione per la connessione alla sessione disconnessa. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesto di immettere la password.

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

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

-Id

Specifica l'ID di una sessione disconnessa. Il parametro ID funziona solo quando la sessione disconnessa è stata precedentemente connessa alla sessione corrente.

Questo parametro è valido, ma non efficace, quando la sessione viene archiviata nel computer locale, ma non è stata connessa alla sessione corrente.

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

-InstanceId

Specifica l'ID istanza della sessione disconnessa. L'ID istanza è un GUID che identifica in modo univoco una sessione PSSession in un computer locale o remoto. L'ID istanza viene archiviato nella proprietà InstanceID della sessione PSSession.

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

-JobName

Specifica un nome descrittivo per il processo restituito Receive-PSSession .

Receive-PSSession restituisce un processo quando il valore del parametro OutTarget è Job o il processo in esecuzione nella sessione disconnessa è stato avviato nella sessione corrente.

Se il processo in esecuzione nella sessione disconnessa è stato avviato nella sessione corrente, PowerShell riutilizza l'oggetto processo originale nella sessione e ignora il valore del parametro JobName .

Se il processo in esecuzione nella sessione disconnessa è stato avviato in una sessione diversa, PowerShell crea un nuovo oggetto processo. Usa un nome predefinito, ma il nome può essere modificato mediante questo parametro.

Se il valore predefinito o il valore esplicito del parametro OutTarget non è Job, il comando ha esito positivo, ma il parametro JobName non ha alcun effetto.

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

-Name

Specifica il nome descrittivo della sessione disconnessa.

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

-OutTarget

Determina come vengono restituiti i risultati della sessione. I valori validi per questo parametro sono:

  • Processo. restituisce i risultati in modo asincrono in un oggetto processo. È possibile utilizzare il parametro JobName per specificare un nome o un nuovo nome per il processo.
  • Host. restituisce i risultati alla riga di comando (in modo sincrono). Se il comando viene riavviato o se i risultati sono costituiti da un numero elevato di oggetti, la risposta potrebbe subire un ritardo.

Il valore predefinito del parametro OutTarget è Host. Se il comando ricevuto in una sessione disconnessa è stato avviato nella sessione corrente, il valore predefinito del parametro OutTarget è il modulo in cui è stato avviato il comando. Se il comando è stato avviato come processo, per impostazione predefinita viene restituito come processo. In caso contrario, viene restituito al programma host per impostazione predefinita.

In genere il programma host visualizza gli oggetti restituiti nella riga di comando senza ritardo, ma questo comportamento può variare.

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

-Port

Specifica la porta di rete del computer remoto utilizzata per riconnettersi alla sessione. Per connettersi a un computer remoto, deve essere in ascolto sulla porta usata dalla connessione. Le porte predefinite sono 5985, ovvero la porta WinRM per HTTP e 5986, ovvero la porta WinRM per HTTPS.

Prima di usare una porta alternativa, è necessario configurare il listener WinRM nel computer remoto per l'ascolto su tale porta. Per configurare il listener, digitare i due comandi seguenti al prompt di PowerShell:

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

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

Non usare il parametro Port a meno che non sia necessario. La porta impostata nel comando si applica a tutti i computer o le sessioni in cui viene eseguito il comando. Un'impostazione di porta alternativa potrebbe impedire l'esecuzione del comando in tutti i computer.

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

-Session

Specifica la sessione disconnessa. Immettere una variabile contenente la sessione PSSession o un comando che crea o ottiene la sessione PSSession, ad esempio un Get-PSSession comando.

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

-SessionOption

Specifica le opzioni avanzate per la sessione. Immettere un oggetto SessionOption , ad esempio quello creato usando il New-PSSessionOption cmdlet o una tabella hash in cui le chiavi sono nomi di opzioni di sessione e i valori sono valori di opzione di sessione.

I valori predefiniti per le opzioni sono determinati dal valore della variabile di $PSSessionOption preferenza, se impostato. In caso contrario, i valori predefiniti vengono stabiliti dalle opzioni impostate nella configurazione di sessione.

I valori delle opzioni di sessione hanno la precedenza sui valori predefiniti per le sessioni impostate nella $PSSessionOption variabile di preferenza e nella configurazione della sessione. Tuttavia, non hanno la precedenza sui valori massimi, sulle quote o sui limiti impostati nella configurazione della sessione.

Per una descrizione delle opzioni di sessione che includono i valori predefiniti, vedere New-PSSessionOption. Per informazioni sulla variabile di preferenza $PSSessionOption , vedere about_Preference_Variables. Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.

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

-UseSSL

Indica che questo cmdlet usa il protocollo SSL (Secure Sockets Layer) per connettersi alla sessione disconnessa. Per impostazione predefinita, SSL non viene usato.

WS-Management crittografa tutto il contenuto di PowerShell trasmesso in rete. UseSSL è una protezione aggiuntiva che invia i dati attraverso una connessione HTTPS anziché una connessione HTTP.

Se si usa questo parametro e SSL non è disponibile sulla porta usata per il comando, il comando ha esito negativo.

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

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

PSSession

È possibile inviare tramite pipe gli oggetti sessione a questo cmdlet, ad esempio gli oggetti restituiti dal Get-PSSession cmdlet .

Int32

È possibile inviare tramite pipe gli ID sessione a questo cmdlet.

Guid

È possibile inviare tramite pipe gli ID istanza delle sessioni questo cmdlet.

String

È possibile inviare tramite pipe i nomi di sessione a questo cmdlet.

Output

Job

Se il valore o il valore predefinito del parametro OutTarget è Job, Receive-PSSession restituisce un oggetto processo.

PSObject

Questo cmdlet restituisce i risultati dei comandi eseguiti nella sessione disconnessa, se presente.

Note

PowerShell include gli alias seguenti per Receive-PSSession:

  • Tutte le piattaforme:
    • rcsn

Questo cmdlet è disponibile solo nelle piattaforme Windows.

Receive-PSSession ottiene i risultati solo dalle sessioni disconnesse. È possibile disconnettere e riconnettersi solo le sessioni connesse o terminate in corrispondenza dei computer che eseguono PowerShell 3.0 o versioni successive.

Se i comandi in esecuzione nella sessione disconnessa non hanno generato risultati o se i risultati sono già stati restituiti a un'altra sessione, Receive-PSSession non genera alcun output.

La modalità di buffering di output di una sessione determina il modo in cui i comandi nella sessione gestiscono l'output quando la sessione viene disconnessa. Quando il valore dell'opzione OutputBufferingMode della sessione è Drop e il buffer di output è pieno, il comando inizia a eliminare l'output. Receive-PSSession non è in grado di recuperare questo output. Per altre informazioni sull'opzione modalità buffering di output, vedere gli articoli della Guida per i cmdlet New-PSSessionOption e New-PSTransportOption .

Non è possibile modificare il valore di timeout di inattività di una sessione PSSession quando ci si connette alla sessione PSSession o si ricevono risultati. Il parametro SessionOption di Receive-PSSession accetta un oggetto SessionOption con un valore IdleTimeout . Tuttavia, il valore IdleTimeout dell'oggetto SessionOption e il valore IdleTimeout della $PSSessionOption variabile vengono ignorati quando si connette a una sessione PSSession o ricevono risultati.

  • È possibile impostare e modificare il timeout di inattività di una sessione PSSession quando si crea la sessione PSSession, usando i New-PSSession cmdlet o Invoke-Command e quando si disconnette dalla sessione PSSession.
  • La proprietà IdleTimeout di una sessione PSSession è fondamentale per le sessioni disconnesse perché determina per quanto tempo viene mantenuta una sessione disconnessa nel computer remoto. Le sessioni disconnesse sono considerate inattive dal momento della disconnessione, anche se vi sono comandi in esecuzione.

Se si avvia un processo in una sessione remota usando il parametro AsJob del Invoke-Command cmdlet , l'oggetto processo viene creato nella sessione corrente, anche se il processo viene eseguito nella sessione remota. Se si disconnette la sessione remota, l'oggetto processo nella sessione corrente viene disconnesso dal processo. L'oggetto processo contiene tutti i risultati restituiti, ma non riceve nuovi risultati dal processo nella sessione disconnessa.

Se un client diverso si connette alla sessione che contiene il processo in esecuzione, i risultati recapitati all'oggetto processo originale nella sessione originale non sono disponibili nella sessione appena connessa. Nella sessione riconnessa sono disponibili solo i risultati non recapitati all'oggetto processo originale.

Analogamente, se si avvia uno script in una sessione e quindi si disconnette dalla sessione, tutti i risultati recapitati dallo script alla sessione prima della disconnessione non sono disponibili per un altro client che si connette alla sessione.

Per evitare la perdita di dati nelle sessioni che si intende disconnettere, usare il parametro InDisconnectedSession del Invoke-Command cmdlet. Poiché questo parametro impedisce che vengano restituiti risultati alla sessione corrente, tutti i risultati sono disponibili quando la sessione viene riconnessa.

È anche possibile impedire la perdita di dati usando il Invoke-Command cmdlet per eseguire un Start-Job comando nella sessione remota. In questo caso, l'oggetto processo viene creato nella sessione remota. Non è possibile usare il Receive-PSSession cmdlet per ottenere i risultati del processo. Usare invece il Connect-PSSession cmdlet per connettersi alla sessione e quindi usare il Invoke-Command cmdlet per eseguire un Receive-Job comando nella sessione.

Quando una sessione contenente un processo in esecuzione viene disconnessa e quindi riconnessa, l'oggetto processo originale viene riutilizzato solo se il processo viene disconnesso e riconnesso alla stessa sessione e il comando per riconnettersi non specifica un nuovo nome di processo. Se la sessione viene riconnessa a una sessione client diversa o viene specificato un nuovo nome di processo, PowerShell crea un nuovo oggetto processo per la nuova sessione.

Quando si disconnette una sessione PSSession, lo stato della sessione è Disconnesso e la disponibilità è Nessuno.

  • Il valore della proprietà State è relativo alla sessione corrente. Il valore Disconnected indica che la sessione PSSession non è connessa alla sessione corrente. Tuttavia, non significa che la sessione PSSession sia disconnessa da tutte le sessioni. È possibile che sia connessa a una sessione diversa. Per determinare se è possibile connettersi o riconnettersi alla sessione, utilizzare la proprietà Availability .
  • Un valore availability di None indica che è possibile connettersi alla sessione. Un valore occupato indica che non è possibile connettersi alla sessione PSSession perché è connessa a un'altra sessione.
  • Per altre informazioni sui valori della proprietà State delle sessioni, vedere RunspaceState.
  • Per altre informazioni sui valori della proprietà Availability delle sessioni, vedere RunspaceAvailability.