Condividi tramite


Get-PSSession

Ottiene le sessioni di Windows PowerShell nei computer locali e remoti.

Sintassi

Get-PSSession
   [-Name <String[]>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-InstanceId <Guid[]>]
   [<CommonParameters>]
Get-PSSession
   [-Id] <Int32[]>
   [<CommonParameters>]

Descrizione

Il cmdlet Get-PSSession ottiene le sessioni di PowerShell gestite dall'utente (PSSession) nei computer locali e remoti.

A partire da Windows PowerShell 3.0, le sessioni vengono archiviate nei computer alla fine remota di ogni connessione. È possibile usare il parametro ComputerName o ConnectionUri di Get-PSSession per ottenere le sessioni che si connettono al computer locale o ai computer remoti, anche se non sono state create nella sessione corrente.

Senza parametri, Get-PSSession ottiene tutte le sessioni che sono state create nella sessione corrente.

Usare i parametri di filtro, tra cui Name, ID, InstanceID, State, ApplicationName e ConfigurationName per selezionare tra le sessioni restituite da Get-PSSession .

Usare i parametri rimanenti per configurare la connessione temporanea in cui viene eseguito il comando Get-PSSession quando si usa il parametro ComputerName o ConnectionUri.

NOTA: in Windows PowerShell 2.0, senza parametri, Get-PSSession ottiene tutte le sessioni create nella sessione corrente. Il parametro ComputerName ottiene le sessioni create nella sessione corrente e si connettono al computer specificato.

Per altre informazioni sulle sessioni di PowerShell, vedere about_PSSessions.

Esempio

Esempio 1: Ottenere sessioni create nella sessione corrente

Get-PSSession

Questo comando ottiene tutte le sessioni PSSession create nella sessione corrente. Non ottiene sessioni PSSession create in altre sessioni o in altri computer, anche se si connettono a questo computer.

Esempio 2: Ottenere sessioni connesse al computer locale

Get-PSSession -ComputerName "localhost"

Questo comando ottiene le sessioni PSSession connesse al computer locale. Per indicare il computer locale, digitare il nome del computer, localhost o un punto (.)

Il comando restituisce tutte le sessioni nel computer locale, anche se sono state create in sessioni diverse o in computer diversi.

Esempio 3: Ottenere sessioni connesse a un computer

Get-PSSession -ComputerName "Server02"

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  2 Session3        Server02       Disconnected  ITTasks                       Busy
  1 ScheduledJobs   Server02       Opened        Microsoft.PowerShell     Available
  3 Test            Server02       Disconnected  Microsoft.PowerShell          Busy

Questo comando ottiene le sessioni PSSession connesse al computer Server02.

Il comando restituisce tutte le sessioni in Server02, anche se sono state create in sessioni diverse o in computer diversi.

L'output mostra che due sessioni sono associate allo stato Disconnected e alla disponibilità Busy. Sono state create in sessioni diverse e sono attualmente in uso. La sessione ScheduledJobs, aperta e disponibile, è stata creata nella sessione corrente.

Esempio 4: Salvare i risultati di questo comando

New-PSSession -ComputerName Server01, Server02, Server03
$s1, $s2, $s3 = Get-PSSession

Questo esempio illustra come salvare i risultati di un comando Get-PSSession in più variabili.

Il primo comando usa il cmdlet New-PSSession per creare sessioni PSSession in tre computer remoti.

Il secondo comando usa un cmdlet Get-PSSession per ottenere le tre sessioni PSSession. Salva quindi ogni sessione PSSession in una variabile separata.

Quando PowerShell assegna una matrice di oggetti a una matrice di variabili, assegna il primo oggetto alla prima variabile, il secondo oggetto alla seconda variabile e così via. Se il numero di oggetti è superiore a quello delle variabili, tutti gli oggetti rimanenti vengono assegnati all'ultima variabile nella matrice. Se sono presenti più variabili che oggetti, le variabili in eccesso non vengono usate.

Esempio 5: Eliminare una sessione usando un ID istanza

Get-PSSession | Format-Table -Property ComputerName, InstanceID
$s = Get-PSSession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f
Remove-PSSession -Session $s

In questo esempio viene illustrato come ottenere una sessione PSSession usando il relativo ID istanza e quindi per eliminare la sessione PSSession.

Il primo comando ottiene tutte le sessioni PSSession create nella sessione corrente. Invia le sessioni PSSession al cmdlet Format-Table, che visualizza le proprietà ComputerName e InstanceID di ogni PSSession.

Il secondo comando usa il cmdlet Get-PSSession per ottenere una sessione PSSession specifica e salvarla nella variabile $s. Il comando usa il parametro InstanceID per identificare la sessione PSSession.

Il terzo comando usa il cmdlet Remove-PSSession per eliminare la sessione PSSession nella variabile $s.

Esempio 6: Ottenere una sessione con un nome specifico

I comandi in questo esempio trovano una sessione che ha un formato di nome specifico e usa una particolare configurazione di sessione e quindi si connettono a tale sessione. È possibile usare un comando simile al seguente per trovare una sessione in cui un collega ha iniziato un'attività e connettersi per completare l'attività.

Get-PSSession -ComputerName Server02, Server12 -Name BackupJob* -ConfigurationName ITTasks -SessionOption @{OperationTimeout=240000}

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  3 BackupJob04     Server02        Disconnected        ITTasks                  None

$s = Get-PSSession -ComputerName Server02 -Name BackupJob04 -ConfigurationName ITTasks | Connect-PSSession
$s

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 5 BackupJob04     Server02        Opened        ITTasks                  Available

Il primo comando ottiene sessioni nei computer remoti Server02 e Server12 con nomi che iniziano con BackupJob e usano la configurazione della sessione ITTasks. Il comando usa il parametro Name per specificare il modello di nome e il parametro ConfigurationName per specificare la configurazione della sessione. Il valore del parametro SessionOption è una tabella hash che imposta il valore di OperationTimeout su 240000 millisecondi (4 minuti). Questa impostazione consente di completare il comando più tempo. I parametri ConfigurationName e SessionOption vengono usati per configurare le sessioni temporanee in cui viene eseguito il cmdlet Get-PSSession in ogni computer. L'output mostra che il comando restituisce la sessione BackupJob04. La sessione è disconnessa e la disponibilità è None, che indica che non è in uso.

Il secondo comando usa il cmdlet Get-PSSession per accedere alla sessione BackupJob04 e al cmdlet Connect-PSSession per connettersi alla sessione. Il comando salva la sessione nella variabile $s.

Il terzo comando ottiene la sessione nella variabile $s. L'output mostra che il comando Connect-PSSession è riuscito. La sessione è in stato Opened ed è disponibile per l'uso.

Esempio 7: Ottenere una sessione usando il relativo ID

Get-PSSession -Id 2

Questo comando ottiene la sessione PSSession con ID 2. Poiché il valore della proprietà ID è univoco solo nella sessione corrente, il parametro Id è valido solo per i comandi locali.

Parametri

-AllowRedirection

Indica che questo cmdlet consente il reindirizzamento di questa connessione a un URI (Uniform Resource Identifier) alternativo. Per impostazione predefinita, PowerShell non reindirizza le connessioni.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ConnectionUri .

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-ApplicationName

Specifica il nome di 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, il nome dell'applicazione è WSMan: https://localhost:5985/WSMAN. Il nome dell'applicazione di una sessione è archiviato nella proprietà Runspace.ConnectionInfo.AppName della sessione.

Il valore di questo parametro consente di selezionare e filtrare le sessioni. L'applicazione usata dalla sessione rimane invariata.

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

-Authentication

Specifica il meccanismo usato per autenticare le credenziali per la sessione in cui viene eseguito il comando Get-PSSession.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ComputerName o ConnectionUri.

I valori validi per questo parametro sono:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential.

Il valore predefinito è Default.

Per altre informazioni sui valori di questo parametro, vedere Enumerazione AuthenticationMechanism nella libreria MSDN.

ATTENZIONE: l'autenticazione del provider di supporto per la sicurezza delle credenziali (CredSSP), 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 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.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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 creare la sessione in cui il viene eseguito il comando Get-PSSession. Immettere l'identificazione personale del certificato.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ComputerName o ConnectionUri.

I certificati vengono usati nell'autenticazione basata sui certificati client. Possono essere mappati solo ad 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à Cert di PowerShell.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-ComputerName

Specifica una matrice di nomi di computer. Ottiene le sessioni che si connettono ai computer specificati. I caratteri jolly non sono consentiti. Non è previsto alcun valore predefinito.

A partire da Windows PowerShell 3.0, gli oggetti PSSession vengono archiviati nei computer alla fine remota di ogni connessione. Per ottenere le sessioni nei computer specificati, PowerShell crea una connessione temporanea a ogni computer ed esegue un comando Get-PSSession .

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo di uno o più computer. Per specificare il computer locale, digitare il nome del computer, localhost o un punto (.).

Nota: questo parametro ottiene sessioni solo dai computer che eseguono Windows PowerShell 3.0 o versioni successive di PowerShell. Nelle versioni precedenti non vengono archiviate le sessioni.

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. Questo cmdlet ottiene solo alle sessioni che usano la configurazione della 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, l'URI dello schema seguente viene prependato: https://schemas.microsoft.com/powershell. Il nome della configurazione di una sessione è archiviato nella proprietà ConfigurationName della sessione.

Il valore di questo parametro consente di selezionare e filtrare le sessioni. La configurazione di sessione usata dalla sessione rimane invariata.

Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.

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

-ConnectionUri

Specifica un URI che definisce l'endpoint di connessione per la sessione temporanea in cui viene eseguito il comando Get-PSSession . L'URI deve essere completo.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ConnectionUri .

Il formato di questa stringa è il seguente:

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

Il valore predefinito è: https://localhost:5985/WSMAN.

Se non si specifica un ConnectionUri, è possibile usare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori ConnectionURI . I valori validi per il segmento Trasporto 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.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Questo parametro ottiene sessioni solo da computer che eseguono Windows PowerShell versioni 3.0 o successive di Windows PowerShell. Nelle versioni precedenti non vengono archiviate le sessioni.

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 una credenziale utente. Questo cmdlet esegue il comando con le autorizzazioni dell'utente specificato. Specificare un account utente che dispone dell'autorizzazione per connettersi al computer remoto ed eseguire un comando Get-PSSession. Il valore predefinito è l'utente corrente. Digitare un nome utente, ad esempio , Domain01\User01o User@Domain.como immettere un oggetto PSCredential, ad esempio User01uno restituito dal cmdlet Get-Credential. Quando si digita un nome utente, questo cmdlet richiede una password.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ComputerName o ConnectionUri.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-Id

Specifica una matrice di ID sessione. Questo cmdlet ottiene solo le sessioni con gli ID specificati. Digitare uno o più ID, separati da virgole o usare l'operatore di intervallo (..) per specificare un intervallo di ID. Non è possibile usare il parametro ID insieme al parametro ComputerName .

Un ID è un intero che identifica in modo univoco le sessioni gestite dall'utente nella sessione corrente. È più facile ricordare e digitare l'oggetto InstanceId, ma è univoco solo all'interno della sessione corrente. L'ID di una sessione è archiviato nella proprietà ID della sessione.

Type:Int32[]
Position:0
Default value:All sessions
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Specifica una matrice di ID istanza di sessioni. Questo cmdlet ottiene solo le sessioni con gli ID dell'istanza specificata.

L'ID istanza è un GUID che identifica in modo univoco una sessione in un computer locale o remoto. InstanceID è univoco, anche quando sono in esecuzione più sessioni in PowerShell.

L'ID istanza di una sessione è archiviato nella proprietà InstanceID della sessione.

Type:Guid[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifica una matrice di nomi di sessione. Questo cmdlet ottiene solo le sessioni con i nomi descrittivi specificati. I caratteri jolly sono consentiti.

Il nome descrittivo di una sessione è archiviato nella proprietà Name della sessione.

Type:String[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Port

Specifica la porta di rete usata per la connessione temporanea in cui viene eseguito il comando Get-PSSession. Per connettersi a un computer remoto, è necessario che il computer remoto sia in attesa 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 di Gestione remota Windows 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\>

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ComputerName o ConnectionUri.

Non usare il parametro Port se non necessario. Il set di porte nel comando si applica a tutti i computer o alle sessioni in cui viene eseguito il comando. Un'impostazione di porta alternativa potrebbe impedire l'esecuzione del comando in tutti i computer.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Type:Int32
Position:Named
Default value:5985, 5986
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionOption

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

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

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

Per una descrizione delle opzioni della sessione, inclusi i valori predefiniti, vedere New-PSSessionOption. Per informazioni sulla $PSSessionOption variabile di preferenza, 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

-State

Specifica uno stato di sessione. Questo cmdlet ottiene solo sessioni nello stato specificato. I valori accettabili per questo parametro sono: Tutti, Open, Disconnected, Closed e Broken. Il valore predefinito è All.

Il valore di stato della sessione è relativo alle sessioni correnti. Alle sessioni che non sono state create nelle sessioni correnti e che non sono connesse alla sessione corrente è associato lo stato Disconnected, anche quando sono connesse a un'altra sessione.

Lo stato di una sessione è archiviato nella proprietà State della sessione.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Type:SessionFilterState
Accepted values:All, Opened, Disconnected, Closed, Broken
Position:Named
Default value:All
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

Specifica il numero massimo di connessioni simultanee che è possibile stabilire per eseguire il comando Get-PSSession. Se si omette questo parametro o si immette un valore pari a 0 (zero), viene usato il valore predefinito 32. Questo valore limite si applica solo al comando corrente, non alla sessione o al computer.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-UseSSL

Indica che questo cmdlet usa il protocollo Secure Sockets Layer (SSL) per stabilire la connessione in cui viene eseguito il comando Get-PSSession . Per impostazione predefinita SSL non viene usato. Se si usa questo parametro, ma SSL non è disponibile sulla porta usata per il comando, il comando non riesce.

Questo parametro configura la connessione temporanea creata per eseguire un comando Get-PSSession con il parametro ComputerName

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

Input

None

Non è possibile inviare input tramite pipe a questo cmdlet.

Output

PSSession

Note

  • Questo cmdlet ottiene gli oggetti PSSession delle sessioni gestite dall'utente, ad esempio quelli creati usando i cmdlet New-PSSession, Enter-PSSession e Invoke-Command. Non ottiene la sessione gestita dal sistema creata all'avvio di PowerShell.
  • A partire da Windows PowerShell 3.0, gli oggetti PSSession vengono archiviati nel computer che si trova sul lato server o che riceve la fine di una connessione. Per ottenere le sessioni archiviate nel computer locale o in un computer remoto, PowerShell stabilisce una sessione temporanea nel computer specificato ed esegue i comandi di query nella sessione.
  • Per ottenere le sessioni che si connettono a un computer remoto, usare i parametri ComputerName o ConnectionUri per specificare il computer remoto. Per filtrare le sessioni ottenute da Get-PSSession, usare i parametri Name, ID, InstanceID e State. Usare i parametri rimanenti per configurare la sessione temporanea usata da Get-PSSession.
  • Quando si usano i parametri ComputerName o ConnectionUri, Get-PSSession ottiene solo le sessioni dai computer che eseguono Windows PowerShell 3.0 e versioni successive di PowerShell.
  • Il valore della proprietà State di una sessione PSSession è relativo alla sessione corrente. Pertanto, il valore Disconnected indica che la sessione PSSession non è connessa alla sessione corrente. Tuttavia, non significa che la sessione PSSession è disconnessa da tutte le sessioni. È possibile che sia connessa a una sessione diversa. Per determinare se è possibile connettersi o riconnettersi alla sessione PSSession dalla sessione corrente, utilizzare la proprietà Availability .

Se il valore di Availability è None, è possibile connettersi alla sessione. Il 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 Enumerazione RunspaceState.

Per altre informazioni sui valori della proprietà Availability delle sessioni, vedere Enumerazione RunspaceAvailability.