ARGOMENTO
about_PSSessions
DESCRIZIONE BREVE
Descrive le sessioni di Windows PowerShell (PSSession) e illustra come
stabilire una connessione permanente a un computer remoto.
DESCRIZIONE DETTAGLIATA
Per eseguire comandi di Windows PowerShell in un computer remoto, è
possibile utilizzare il parametro ComputerName di un cmdlet oppure
creare un sessione di Windows PowerShell (PSSession) ed eseguire
comandi in tale sessione.
Quando si crea una sessione PSSession, Windows PowerShell
stabilisce una connessione permanente al computer remoto.
Utilizzare una sessione PSSession per eseguire una serie di comandi
correlati in un computer remoto. I comandi che vengono eseguiti nella
stesse sessione PSSession possono condividere dati, ad esempio valori
di variabili, alias e funzioni.
È anche possibile creare una sessione PSSession nel computer locale ed
eseguire comandi in tale sessione. Una sessione PSSession locale utilizza
l'infrastruttura remota di Windows PowerShell per creare e mantenere
la sessione PSSession.
In questo argomento viene illustrato come creare, utilizzare,
ottenere ed eliminare sessioni PSSession. Per informazioni avanzate,
vedere about_PSSession_Details.
Nota: le sessioni PSSession utilizzano l'infrastruttura remota di
Windows PowerShell. Per utilizzare sessioni PSSession, è necessario
configurare i computer locali e remoti per la comunicazione remota.
Per ulteriori informazioni, vedere about_Remote_Requirements.
In Windows Vista e nelle versioni successive di Windows,
per creare una sessione PSSession in un computer locale, è
necessario avviare Windows PowerShell con l'opzione "Esegui come
amministratore".
DEFINIZIONE DI SESSIONE
Una sessione è un ambiente in cui viene eseguito Windows PowerShell.
Ogni volta che si avvia Windows PowerShell, viene automaticamente
creata una sessione in cui è possibile eseguire comandi. È anche
possibile aggiungere elementi alla sessione, ad esempio moduli e
snap-in, e creare elementi, ad esempio variabili, funzioni e
alias. Questi elementi sono presenti esclusivamente nella
sessione in uso e vengono eliminati quando la sessione termina.
È anche possibile creare sessioni aggiuntive, note come "sessioni
di Windows PowerShell" o "PSSession", nel computer locale o in un
computer remoto. Analogamente alla sessione predefinita, è possibile
eseguire comandi in una sessione PSSession, nonché aggiungere e
creare elementi.
Tuttavia, a differenza della sessione avviata automaticamente, è
possibile controllare le sessioni PSSession che si creano. È possibile
ottenere, creare, configurare e rimuoverle ed è possibile eseguire
più comandi nello stessa sessione PSSession. La sessione PSSession
resta aperta e disponibile finché non la si elimina dalla sessione.
In genere, si crea una sessione PSSession per eseguire una serie
di comandi correlati in un computer remoto. Quando si crea una
sessione PSSession in un computer remoto, Windows PowerShell
stabilisce una connessione permanente con il computer remoto per
supportare tale sessione.
Se si utilizza il parametro computerName del cmdlet
Invoke-Command o Enter-PSSession per eseguire un comando remoto o
avviare una sessione interattiva, in Windows PowerShell viene
creata una sessione temporanea nel computer remoto e viene chiusa la
sessione non appena il comando viene completato o la sessione interattiva
termina. Non è possibile controllare queste sessioni temporanee e non è
possibile utilizzarle per più comandi o per più sessioni interattive.
In Windows PowerShell, per "sessione corrente" si intende la
sessione in cui si lavora. "Sessione corrente" si può riferire a
qualsiasi sessione, includendo una sessione temporanea o una sessione
PSSession.
PERCHÉ UTILIZZARE UNA SESSIONE PSSESSION?
Utilizzare una sessione PSSession quando è necessaria una connessione
permanente a un computer remoto. Con una sessione PSSession, è possibile
eseguire una serie di comandi che condividono dati, ad esempio il
valore di variabili, il contenuto di una funzione o la definizione di
un alias.
È possibile eseguire comandi remoti senza creare una sessione
PSSession. Utilizzare il parametro ComputerName di cmdlet abilitati in
modalità remota per eseguire un comando singolo o una serie di comandi non
correlati in uno o più computer.
Quando si utilizza il parametro ComputerName di Invoke-Expression
o Enter-PSSession, Windows PowerShell stabilisce una connessione
temporanea al computer remoto e chiude la connessione non appena
il comando viene completato. Quando la connessione viene chiusa
tutti gli elementi di dati creati vengono persi.
Gli altri cmdlet che dispongono di un parametro ComputerName, ad
esempio Get-Eventlog e Get-WmiObject, utilizzando tecnologie di
comunicazione remota diverse per raccogliere dati. Nessuno crea una
connessione permanente come una sessione PSSession.
MODALITÀ DI CREAZIONE DI UNA SESSIONE PSSESSION
Per creare una sessione PSSession, utilizzare il cmdlet
New-PSSession. Per creare la sessione PSSession nel computer remoto,
utilizzare il parametro ComputerName del cmdlet New-PSSession.
Ad esempio, il comando seguente crea una nuova sessione PSSession nel
computer Server01.
new-pssession -computername Server01
Quando si invia il comando, New-PSSession crea la sessione PSSession e
restituisce un oggetto che rappresenta tale sessione. È possibile salvare
l'oggetto in una variabile al momento della creazione della sessione
PSSession o utilizzare un comando Get-PSSession per ottenere la sessione
PSSession in un momento successivo.
Ad esempio, il comando seguente crea una nuova sessione PSSession nel
computer Server01 e salva l'oggetto risultante nella variabile $ps.
$ps = new-pssession -computername Server01
MODALITÀ DI CREAZIONE DI SESSIONI PSSESSION IN MOLTI COMPUTER
Per creare sessioni PSSession in più computer, utilizzare il parametro
ComputerName del cmdlet New-PSSession. Digitare i nomi dei computer
remoti in un elenco delimitato da virgole.
Ad esempio, per creare sessioni PSSession nei computer Server01,
Server02 e Server03, digitare:
new-PSSession -computername Server01, Server02, Server03
New-PSSession crea una sessione PSSession in ognuno dei computer
remoti.
MODALITÀ DI OTTENIMENTO DI SESSIONI PSSESSION
Per ottenere le sessioni PSSession create nella sessione corrente,
utilizzare il cmdlet Get-PSSession. Get-PSSession restituisce lo
stesso tipo di oggetto restituito da New-PSSession.
Il comando seguente ottiene tutte le sessioni PSSession create nella
sessione corrente.
get-PSSession
Nella visualizzazione predefinita delle sessioni PSSession è
riportato il loro ID e un nome visualizzato predefinito. È possibile
assegnare un nome visualizzato alternativo al momento della creazione della
sessione.
Id Name ComputerName State ConfigurationName
--- ---- ------------ ----- ---------------------
1 Session1 Server01 Opened Microsoft.PowerShell
2 Session2 Server02 Opened Microsoft.PowerShell
3 Session3 Server03 Opened Microsoft.PowerShell
È anche possibile salvare le sessioni PSSession in una variabile.
Il comando seguente ottiene sessioni PSSession e le salva nella
variabile $ps123.
$ps123 = get-PSSession
Quando si utilizzano i cmdlet PSSession, è possibile fare
riferimento a una sessione PSSession tramite l'ID, il nome o ID
istanza (GUID) relativo. Il comando seguente ottiene una sessione
PSSession tramite l'ID relativo e la salva nella variabile $ps01.
$ps01 = get-PSSession -id 1
Get-PSSession ottiene solo le sessioni PSSession create nella sessione
corrente. Non ottiene le sessioni PSSession create in altre sessioni
o in altri computer, anche se le sessioni sono connesse ed eseguono
comandi nel computer locale.
MODALITÀ DI ESECUZIONE DI COMANDI IN UNA SESSIONE PSSESSION
Per eseguire un comando in una o più sessioni PSSession, utilizzare il
cmdlet Invoke-Command. Utilizzare il parametro Session per specificare le
sessioni PSSession e il parametro ScriptBlock per specificare il comando.
Ad esempio, per eseguire un comando Get-ChildItem ("dir") in
ognuna delle tre sessioni PSSession salvate nella variabile
$ps123, digitare:
invoke-command -session $ps123 -scriptblock {get-childitem}
MODALITÀ DI ELIMINAZIONE DI SESSIONI PSSESSION
Al termine delle operazioni nella sessione PSSession, utilizzare
il cmdlet Remove-PSSession per eliminare la sessione e rilasciare
le risorse da essa utilizzate.
remove-PSSession -session $ps
- oppure
remove-PSSession -id 1
Se non si elimina la sessione PSSession, la sessione PSSession resterà
aperta e disponibile per l'uso finché non si chiude la sessione o
finché non si esce da Windows PowerShell.
È anche possibile utilizzare il parametro TimeOut di New-PSSession per
impostare un tempo di scadenza per una sessione PSSession. Per ulteriori
informazioni, vedere new-PSSession.
CMDLET PSSESSION
Cmdlet Descrizione
----------------- -----------------------------------------------------------------
New-PSSession Crea una nuova sessione PSSession in un computer locale o remoto.
Get-PSSession Ottiene le sessioni PSSession della sessione corrente.
Remove-PSSession Elimina le sessioni PSSession della sessione corrente.
Enter-PSSession Avvia una sessione interattiva.
Exit-PSSession Termina una sessione interattiva.
Per un elenco dei cmdlet PSSession, digitare:
get-help *-PSSession
PER ULTERIORI INFORMAZIONI
Per ulteriori informazioni sulle sessioni PSSession, vedere
about_PSSession_Details.
VEDERE ANCHE
about_Remote
about_Remote_Requirements
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command