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-Command
parametro 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: Connettersi 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 ConnectionURI , 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 MaximumConnectionRedirectionCount . Utilizzare il parametro MaximumRedirection del New-PSSessionOption
cmdlet o impostare la proprietà MaximumConnectionRedirectionCount della $PSSessionOption
variabile di preferenza. Il valore predefinito è 5.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 nella proprietà Runspace.ConnectionInfo.AppName della sessione.
Il valore del parametro viene usato per selezionare e filtrare le sessioni. Non modifica l'applicazione usata dalla sessione.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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:
- Predefiniti
- 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.
Tipo: | AuthenticationMechanism |
Valori accettati: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Posizione: | Named |
Valore predefinito: | Default |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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:
.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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:COMPUTERNAME
o localhost.
Tipo: | String |
Alias: | Cn |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 .
Tipo: | Uri |
Alias: | URI, CU |
Posizione: | 0 |
Valore predefinito: | http://localhost:5985/WSMAN |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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?.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | Current user |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | Int32 |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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.
Tipo: | Guid |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Name
Specifica il nome descrittivo della sessione disconnessa.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | OutTarget |
Valori accettati: | Default, Host, Job |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | PSSession |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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.
Tipo: | PSSessionOption |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe gli oggetti sessione a questo cmdlet, ad esempio gli oggetti restituiti dal Get-PSSession
cmdlet .
È possibile inviare tramite pipe gli ID sessione a questo cmdlet.
È possibile inviare tramite pipe gli ID istanza delle sessioni questo cmdlet.
È possibile inviare tramite pipe i nomi di sessione a questo cmdlet.
Output
Se il valore o il valore predefinito del parametro OutTarget è Job
, Receive-PSSession
restituisce un oggetto processo.
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 oInvoke-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.