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