ARGOMENTO
about_PSSession_Details
DESCRIZIONE BREVE
Fornisce informazioni dettagliate sulle sessioni di Windows
PowerShell e sul ruolo che interpretano nei comandi remoti.
DESCRIZIONE DETTAGLIATA
Una sessione è un ambiente in cui viene eseguito Windows
PowerShell. Viene automaticamente creata una sessione ogni volta
che si avvia Windows PowerShell. È inoltre possibile creare sessioni
aggiuntive, denominate "sessioni di Windows PowerShell" o "PSSession"
nel computer in uso o in un altro computer.
A differenza delle sessioni create automaticamente in Windows
PowerShell, le sessioni PSSession che si creano possono essere
controllate e gestite.
Le sessioni PSSession svolgono un ruolo importante nell'elaborazio
ne remota. Quando si crea una sessione PSSession connessa a un
computer remoto, Windows PowerShell stabilisce una connessione
permanente con il computer remoto per supportare tale sessione. È
possibile utilizzare la sessione PSSession per eseguire una serie
di comandi, funzioni e script che condividono i dati.
In questo argomento vengono fornite informazioni dettagliate su
sessioni e PSSession in Windows PowerShell. Per informazioni di
base sulle attività che è possibile eseguire con le sessioni, vedere
about_PSSessions.
INFORMAZIONI SULLE SESSIONI
Tecnicamente, una sessione è un ambiente di esecuzione in cui
viene eseguito Windows PowerShell. Ogni sessione include
un'istanza del motore System.Management.Automation e un programma
host in cui viene eseguito Windows PowerShell. L'host può essere
la console di Windows PowerShell abituale o un altro programma
che esegue comandi, ad esempio Cmd.exe o un programma compilato
per ospitare Windows PowerShell, ad esempio Windows PowerShell
Integrated Scripting Environment (ISE). Per quanto riguarda Windows, una sessione è un processo di
Windows sul computer di destinazione.
Ogni sessione è configurata indipendentemente. Include proprietà,
criteri di esecuzione e profili propri. L'ambiente presente al
momento della creazione della sessione viene mantenuto per tutta
la sua durata, anche se si modifica l'ambiente nel computer. Tutte le
sessioni vengono create in un ambito globale, anche le sessioni che
si creano in uno script.
In una sessione è possibile eseguire un solo comando (o pipeline
di comandi) alla volta. Un secondo comando eseguito in modo
sincrono (uno alla volta) attende fino a quattro minuti il
completamento del primo comando. Un secondo comando eseguito in modo
asincrono (contemporaneamente) non riesce.
INFORMAZIONI SULLE SESSIONI PSSESSION
Ogni volta che si avvia Windows PowerShell viene creata una
sessione. Inoltre, in Windows PowerShell vengono create
automaticamente sessioni temporanee per l'esecuzione di comandi
singoli. Tuttavia, è anche possibile creare sessioni (denominate
"sessioni di Windows PowerShell" o "PSSession") che è possibile
controllare e gestire.
Le sessioni PSSession sono essenziali per i comandi remoti. Se si
utilizza il parametro ComputerName dei cmdlet Invoke-Command o
Enter-PSSession, in Windows PowerShell viene stabilita una sessione
temporanea per eseguire il comando, quindi viene chiusa la sessione
al completamento del comando o della sessione interattiva.
Tuttavia, se si utilizza il cmdlet New-PSSession per creare una
sessione PSSession, in Windows PowerShell viene stabilita una sessione
permanente nel computer remoto in cui è possibile eseguire più comandi
o sessioni interattive. Le sessioni PSSession create restano aperte e
disponibili per l'uso finché non vengono eliminate o finché non si
chiude la sessione in cui sono state create.
Quando si crea una sessione PSSession in un computer remoto,
viene creato un processo di PowerShell nel computer remoto e
viene stabilita una connessione dal computer locale al processo
sul computer remoto. Quando si crea una sessione PSSession nel
computer locale, sia il nuovo processo che le connessioni vengono
create nel computer locale.
QUANDO È NECESSARIA UNA SESSIONE PSSESSION?
I cmdlet Invoke-Command e Enter-PSSession presentano entrambi i parametri
ComputerName e Session. È possibile utilizzarli alternativamente per
eseguire un comando remoto.
Utilizzare il parametro ComputerName per eseguire un comando
singolo o una serie di comandi non correlati su uno o più computer.
Per eseguire comandi che condividono dati, è necessaria una
connessione permanente al computer remoto. In questo caso, creare una
sessione PSSession, quindi utilizzare il parametro Session per
eseguire comandi nella sessione PSSession.
Molti altri cmdlet che ottengono dati dai computer remoti, quali
Get-Process, Get-Service, Get-EventLog e Get-WmiObject dispongono
di solo un parametro ComputerName. Utilizzano tecnologie diverse dalla
comunicazione remota di Windows PowerShell per raccogliere dati in
modalità remota. Questi cmdlet non dispongono di un parametro Session
ma è possibile utilizzare il cmdlet Invoke-Command per eseguire questi
comandi in una sessione PSSession.
COME SI CREA UNA SESSIONE PSSESSION?
Per creare una sessione PSSession, utilizzare il cmdlet
New-PSSession. È possibile utilizzare New-PSSession per creare
una sessione PSSession in un computer locale o remoto.
POSSO CREARE UNA SESSIONE PSSESSION IN QUALSIASI COMPUTER?
Per creare una sessione PSSession connessa a un computer remoto,
il computer deve essere configurato per la comunicazione remota
in Windows PowerShell. L'utente corrente deve essere membro del gruppo
Administrators nel computer remoto o deve essere in grado di fornire le
credenziali di un membro del gruppo Administrators. Per ulteriori
informazioni, vedere about_Remote_Requirements.
È POSSIBILE VISUALIZZARE SESSIONI PSSESSION CREATE DA ALTRI UTENTI
SUL COMPUTER LOCALE?
No. È possibile ottenere e gestire solo le sessioni PSSession che
si creano nella sessione corrente. Non è possibile visualizzare
sessioni PSSession create da altri utenti, anche se hanno
eseguito comandi sul computer locale.
È POSSIBILE ESEGUIRE UN PROCESSO IN BACKGROUND IN UNA SESSIONE PSSESSION?
Sì. Un processo in background è un comando che viene eseguito in modo
asincrono in background e non interagisce con la sessione corrente.
Quando si invia un comando per avviare un processo, viene restituito
un oggetto processo ma il processo continua a essere in esecuzione in
background finché non viene completato.
Per avviare un processo in background in un computer locale,
utilizzare il comando Start-Job. È possibile eseguire il processo in
background in una connessione temporanea (tramite il parametro
ComputerName) o in una sessione PSSession (tramite il parametro Session).
Per avviare un processo in background in un computer remoto,
utilizzare il cmdlet Invoke-Command con il parametro AsJob oppure
utilizzare il cmdlet Invoke-Command per eseguire un comando
Start-Job in un computer remoto. Quando si utilizza il parametro
AsJob, è possibile utilizzare i parametri ComputerName o Session.
Quando si utilizza Invoke-Command per eseguire un comando Start-Job, è
possibile eseguire il comando in una sessione PSSession. Se si utilizza il
parametro ComputerName, in Windows PowerShell viene terminata la
connessione quando viene restituito l'oggetto processo e il processo viene
interrotto.
Per ulteriori informazioni, vedere about_Jobs.
È POSSIBILE ESEGUIRE UNA SESSIONE INTERATTIVA?
Sì. Per avviare una sessione interattiva con un computer remoto,
utilizzare il cmdlet Enter-PSSession. In una sessione
interattiva, i comandi digitati vengono eseguiti nel computer
remoto, come se venissero digitati direttamente nel computer remoto.
È possibile eseguire una sessione interattiva in una sessione
temporanea (tramite il parametro ComputerName) o in una sessione
PSSession (tramite il parametro Session). Se si utilizza una sessione
PSSession, nella sessione PSSession vengono mantenuti i dati dei comandi
precedenti ed eventuali dati generati durante la sessione interattiva per
l'utilizzo nei comandi successivi.
Quando si termina la sessione interattiva, la sessione PSSession
rimane aperta e disponibile per l'uso.
Per ulteriori informazioni, vedere Enter-PSSession e
Exit-PSSession.
È NECESSARIO ELIMINARE LE SESSIONI PSSESSION?
Sì. Una sessione PSSession è un processo ovvero un ambiente
autosufficiente che utilizza memoria e altre risorse anche
quando non lo si utilizza. Al termine dell'utilizzo di una sessione
PSSession, eliminarla. Se si creano più sessioni PSSession, chiudere
quelle inutilizzate e mantenere solo quelle attualmente in uso.
Per eliminare sessioni PSSession, utilizzare il cmdlet
Remove-PSSession. Elimina le sessioni PSSession e rilascia tutte
le risorse da esse utilizzate.
È anche possibile utilizzare il parametro TimeOut di New-PSSession per
chiudere una sessione PSSession inattiva dopo un intervallo
specificato. Per ulteriori informazioni, vedere
New-PSSession.
Se non si elimina la sessione PSSession o non imposta un timeout, la
sessione PSSession resterà aperta e disponibile per l'uso finché non la si
chiude, finché non si chiude la sessione in cui è stata creata o
finché non si esce da Windows PowerShell. Tuttavia, una sessione
PSSession in un computer remoto verrà disconnessa se il computer
remoto non risponde per quattro minuti (il computer remoto è
configurato per inviare un impulso heartbeat ogni tre minuti).
Se si salva uno oggetto PSSession in una variabile e quindi si
elimina la sessione PSSession o si consente che il timeout scada, la
variabile continua a contenere l'oggetto PSSession ma la sessione
PSSession non è più attiva e non può essere utilizzata o ripristinata.
SESSIONI E SESSIONI PSSESSION SONO UGUALI?
No. Gli sviluppatori possono creare sessioni personalizzate che
includono solo provider e cmdlet selezionati. Se un comando
funziona in una sessione, ma non in un'altra, potrebbe essere
dovuto al fatto che la sessione è limitata.
VEDERE ANCHE
about_Jobs
about_PSSessions
about_Remote
about_Remote_Requirements
Invoke-Command
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession