Connect-PSSession
Riconnettersi alle sessioni disconnesse.
Sintassi
Connect-PSSession
-Name <String[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-Session] <PSSession[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-ComputerName <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-ComputerName <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
-InstanceId <Guid[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Questo cmdlet è disponibile solo nella piattaforma Windows.
Il cmdlet Connect-PSSession
si riconnette alle sessioni di PowerShell gestite dall'utente (PSSessions) disconnesse. Funziona in sessioni disconnesse intenzionalmente, ad esempio usando il cmdlet Disconnect-PSSession
o il parametro InDisconnectedSession del cmdlet Invoke-Command
e quelli disconnessi involontariamente, ad esempio da un'interruzione temporanea della rete.
Connect-PSSession
possibile connettersi a qualsiasi sessione disconnessa avviata dallo stesso utente. Questi includono quelli avviati da o disconnessi da altre sessioni in altri computer.
Tuttavia, Connect-PSSession
non è possibile connettersi a sessioni interrotte o chiuse o sessioni interattive avviate usando il cmdlet Enter-PSSession
. Inoltre, non è possibile connettere sessioni alle sessioni avviate da altri utenti, a meno che non sia possibile fornire le credenziali dell'utente che ha creato la sessione.
Per altre informazioni sulla funzionalità Sessioni disconnesse, vedere about_Remote_Disconnected_Sessions.
Questo cmdlet è stato introdotto in Windows PowerShell 3.0.
Esempio
Esempio 1: Riconnettersi a una sessione
Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Opened ITTasks Available
Questo comando si riconnette alla sessione di ITTask
nel computer Server01.
L'output mostra che il comando ha avuto esito positivo. Il stato
Esempio 2: Effetto della disconnessione e della riconnessione
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
Get-PSSession | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Disconnected Microsoft.PowerShell None
Get-PSSession | Connect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
In questo esempio viene illustrato l'effetto della disconnessione e quindi della riconnessione a una sessione.
Il primo comando usa il cmdlet Get-PSSession
. Senza il parametro ComputerName, il comando ottiene solo le sessioni create nella sessione corrente.
L'output mostra che il comando ottiene la sessione di Backups
nel computer locale. Il dello stato
Il secondo comando usa il cmdlet Get-PSSession
per ottenere gli oggetti pssession creati nella sessione corrente e il cmdlet Disconnect-PSSession
per disconnettere le sessioni. L'output mostra che la sessione di Backups
è stata disconnessa. Il dello stato
Il terzo comando usa il cmdlet Get-PSSession
per ottenere gli PSSession oggetti creati nella sessione corrente e il cmdlet Connect-PSSession
per riconnettere le sessioni. L'output mostra che la sessione di Backups
è stata riconnessa. Il dello stato
Se si usa il cmdlet Connect-PSSession
in una sessione non disconnessa, il comando non influisce sulla sessione e non genera errori.
Esempio 3: Serie di comandi in uno scenario aziendale
Questa serie di comandi illustra come usare il cmdlet Connect-PSSession
in uno scenario aziendale. In questo caso, un amministratore di sistema avvia un processo a esecuzione prolungata in una sessione in un computer remoto. Dopo aver avviato il processo, l'amministratore si disconnette dalla sessione e torna a casa.
Successivamente, l'amministratore accede al computer di casa e verifica che il processo sia stato eseguito fino a quando non viene completato.
L'amministratore inizia creando sessioni in un computer remoto ed eseguendo uno script nella sessione. Il primo comando usa il cmdlet New-PSSession
per creare la sessione di ITTask
nel computer remoto Server01. Il comando usa il parametro ConfigurationName per specificare la configurazione della sessione ITTasks
. Il comando salva le sessioni nella variabile $s
.
Il secondo comando Invoke-Command
cmdlet per avviare un processo in background nella sessione nella variabile $s
. Usa il parametro
Il terzo comando usa il cmdlet Disconnect-PSSession
per disconnettersi dalla sessione nella variabile $s
. Il comando usa il parametro OutputBufferingMode
Successivamente, l'amministratore avvia il computer domestico, accede alla rete aziendale e avvia PowerShell. Il quarto comando usa il cmdlet Get-PSSession
per ottenere le sessioni nel computer Server01. Il comando trova la sessione ITTask
. Il quinto comando usa il cmdlet Connect-PSSession
per connettersi alla sessione di ITTask
. Il comando salva la sessione nella variabile $s
.
Il sesto comando usa il cmdlet Invoke-Command
per eseguire un comando Get-Job
nella sessione nella variabile $s
. L'output mostra che il processo è stato completato correttamente. Il settimo comando usa il cmdlet Invoke-Command
per eseguire un comando Receive-Job
nella sessione nella variabile $s
nella sessione. Il comando salva i risultati nella variabile $BackupSpecs
. L'ottavo comando usa il cmdlet Invoke-Command
per eseguire un altro script nella sessione. Il comando usa il valore della variabile $BackupSpecs
nella sessione come input per lo script.
$s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
Invoke-Command -Session $s -ScriptBlock {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Running True Server01 \\Server30\Scripts\Backup...
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
Get-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
$s = Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
Invoke-Command -Session $s -ScriptBlock {Get-Job}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Completed True Server01 \\Server30\Scripts\Backup...
Invoke-Command -Session $s -ScriptBlock {$BackupSpecs = Receive-Job -JobName Job2}
Invoke-Command -Session $s -ScriptBlock {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
Il nono comando si disconnette dalla sessione nella variabile $s
. L'amministratore chiude PowerShell e chiude il computer. Può riconnettersi alla sessione il giorno successivo e controllare lo stato dello script dal computer di lavoro.
Parametri
-AllowRedirection
Indica che questo cmdlet consente il reindirizzamento di questa connessione a un URI 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 consentire il reindirizzamento della connessione.
È anche possibile limitare il numero di reindirizzamenti della connessione modificando il valore dell'opzione MaximumConnectionRedirectionCount sessione. Utilizzare il parametro 5
.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ApplicationName
Specifica il nome di un'applicazione. Questo cmdlet si connette solo alle sessioni che usano l'applicazione specificata.
Immettere il segmento del nome dell'applicazione dell'URI di connessione. Nell'URI di connessione seguente, ad esempio, il nome dell'applicazione è WSMan: http://localhost:5985/WSMAN
. Il nome dell'applicazione di una sessione viene archiviato nella proprietà Runspace.ConnectionInfo.AppName della sessione.
Il valore di questo 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 alla sessione disconnessa. I valori accettabili per questo parametro sono:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
Il valore predefinito è Default
.
Per altre informazioni sui valori di questo parametro, vedere AuthenticationMechanism Enumeration.
Cautela
L'autenticazione credSSP (Credential Security Support Provider), in cui le credenziali dell'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 di sicurezza dell'operazione remota. Se il computer remoto viene compromesso, è possibile usare le credenziali passate per controllare la sessione di rete.
Tipo: | AuthenticationMechanism |
Valori accettati: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Posizione: | Named |
Valore predefinito: | None |
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 autorizzato a connettersi alla sessione disconnessa. Immettere l'identificazione personale del certificato.
I certificati vengono usati nell'autenticazione basata su certificati client. Possono essere mappati solo agli account utente locali. Non funzionano con gli account di dominio.
Per ottenere un'identificazione personale del certificato, usare un comando Get-Item
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 i computer in cui vengono archiviate le sessioni disconnesse. Le sessioni vengono archiviate nel computer che si trova 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 di un computer. I caratteri jolly non sono consentiti. Per specificare il computer locale, digitare il nome del computer, localhost
o un punto (.
)
Tipo: | String[] |
Alias: | Cn |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ConfigurationName
Si connette solo alle sessioni che usano la configurazione di sessione specificata.
Immettere un nome di configurazione o l'URI completo della risorsa 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 di questo 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 gli URI degli endpoint di connessione per le sessioni disconnesse.
L'URI deve essere completo. Il formato di questa 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 e Port per specificare i valori dell'URI di connessione.
I valori validi per il segmento transport 80
per HTTP e 443
per HTTPS. Per usare le porte predefinite per la comunicazione remota di PowerShell, specificare 5985
di porta 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
Tipo: | Uri[] |
Alias: | URI, CU |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Credential
Specifica un account utente autorizzato a connettersi alla sessione disconnessa. Il valore predefinito è l'utente corrente.
Digitare un nome utente, ad esempio
Le credenziali vengono archiviate in un oggetto PSCredential
Nota
Per altre informazioni sulla protezione dei dati di
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | Current user |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Id
Specifica gli ID delle sessioni disconnesse. Il parametro id
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 gli ID istanza delle sessioni disconnesse.
L'ID istanza è un GUID che identifica in modo univoco un PSSession in un computer locale o remoto.
L'ID istanza viene archiviato nella proprietà instanceID dell'PSSession.
Tipo: | Guid[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Name
Specifica i nomi descrittivi delle sessioni disconnesse.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Port
Specifica la porta di rete nel computer remoto utilizzata per riconnettersi alla sessione. Per connettersi a un computer remoto, il 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 porta
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Session
Specifica le sessioni disconnesse. Immettere una variabile contenente gli oggetti PSSession
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 cmdlet New-PSSessionOption
o una tabella hash in cui le chiavi sono nomi di opzione di sessione e i valori sono valori di opzione sessione.
I valori predefiniti per le opzioni sono determinati dal valore della variabile di preferenza $PSSessionOption
, se impostata. In caso contrario, i valori predefiniti vengono stabiliti dalle opzioni impostate nella configurazione della sessione.
I valori delle opzioni di sessione hanno la precedenza sui valori predefiniti per le sessioni impostate nella variabile di preferenza $PSSessionOption
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 |
-ThrottleLimit
Specifica il numero massimo di connessioni simultanee che è possibile stabilire per eseguire questo comando.
Se si omette questo parametro o si immette un valore di 0
, viene usato il valore predefinito 32
.
Il limite di limitazione si applica solo al comando corrente, non alla sessione o al computer.
Tipo: | Int32 |
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. Il parametro UseSSL è una protezione aggiuntiva che invia i dati attraverso una connessione HTTPS anziché una connessione HTTP.
Se si usa questo parametro, ma SSL non è disponibile sulla porta usata per il comando, il comando ha esito negativo.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra cosa accadrebbe se il cmdlet viene eseguito. 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 una sessione (PSSession) a questo cmdlet.
Output
Questo cmdlet restituisce un oggetto che rappresenta la sessione a cui si è riconnessa.
Note
PowerShell include gli alias seguenti per Connect-PSSession
:
Finestre:
cnsn
Questo cmdlet è disponibile solo nelle piattaforme Windows.
riconnettersi solo alle sessioni disconnesse, ovvero le sessioni con valore Disconnected per la proprietà State. Solo le sessioni connesse o terminano con i computer che eseguono Windows PowerShell 3.0 o versioni successive possono essere disconnesse e riconnesse. Se si usa
Connect-PSSession
in una sessione non disconnessa, il comando non influisce sulla sessione e non genera errori.Le sessioni di loopback disconnesse con token interattivi, create usando il parametro EnableNetworkAccess
, possono essere riconnesse solo dal computer in cui è stata creata la sessione. Questa restrizione protegge il computer da accessi dannosi. Il valore della proprietà
State di un PSSession disponibilitàè relativo alla sessione corrente. Pertanto, un valore di PSSessionDisconnesso indica che lanon è connessa alla sessione corrente. Tuttavia, non significa che il PSSession è disconnesso da tutte le sessioni. Potrebbe essere connesso a una sessione diversa. Per determinare se è possibile connettersi o riconnettersi alla sessione, utilizzare la proprietà . Un valore disponibilità none indica che è possibile connettersi alla sessione. Il valore Occupato indica che non è possibile connettersi alla pssession
perché è connessa a un'altra sessione. Per altre informazioni sui valori della proprietà state
delle sessioni, vedere RunspaceState Enumeration .Per altre informazioni sui valori della proprietà availability
delle sessioni, vedere RunspaceAvailability Enumeration .Non è possibile modificare il valore di timeout di inattività di un PSSession
quando ci si connette al SessionOptionPSSession . Il parametrodi accetta un oggetto SessionOption SessionOptioncon un valore di IdleTimeout . Tuttavia, il valore IdleTimeout dell'oggettoe il valore IdleTimeout della variabile vengono ignorati durante la connessione a un PSSession .È possibile impostare e modificare il timeout di inattività di un
PSSession quando si crea ilPSSession, usando i cmdlet o e quando si disconnette dalla PSSession .La proprietà
IdleTimeout di un PSSessionè fondamentale per le sessioni disconnesse, perché determina per quanto tempo viene mantenuta una sessione disconnessa nel computer remoto. Le sessioni disconnesse vengono considerate inattive dal momento in cui vengono disconnesse, anche se i comandi vengono eseguiti nella sessione disconnessa.