about_PSSessions

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_PSSessions

DESCRIZIONE BREVE

Descrive le sessioni di Windows PowerShell (PSSession) e spiega come stabilire una connessione permanente con un computer remoto.

DESCRIZIONE LUNGA

Per eseguire i comandi di Windows PowerShell in un computer remoto, è possibile usare il parametro ComputerName di un cmdlet oppure creare una sessione di Windows PowerShell (PSSession) ed eseguire i comandi nella sessione PSSession.

Quando si crea una sessione PSSession, Windows PowerShell stabilisce una connessione permanente con il computer remoto. Usare una sessione PSSession per eseguire una serie di comandi correlati in un computer remoto. I comandi che vengono eseguiti nella stessa sessione PSSession possono condividere dati, come i valori delle variabili, gli alias e le funzioni.

È anche possibile creare una sessione PSSession nel computer locale ed eseguirvi i comandi. Una sessione PSSession locale usa l'infrastruttura remota di Windows PowerShell per creare e gestire la sessione PSSession.

A partire da Windows PowerShell 3.0, le sessioni PSSession sono indipendenti dalle sessioni in cui sono state create. Le sessioni PSSession attive vengono gestite nel computer remoto (oppure il computer all'estremità remota o "lato server" della connessione). Di conseguenza, è possibile disconnettersi dalla sessione PSSession e riconnettersi alla stessa istanza successivamente dallo stesso computer o da un computer diverso.

Questo argomento illustra come creare, usare, ottenere ed eliminare le sessioni PSSession. Per altre informazioni, vedere about_PSSession_Details.

Nota

Le sessioni PSSession usano l'infrastruttura remota di Windows PowerShell. Per usare le sessioni PSSession, i computer locali e remoti devono essere configurati per la comunicazione remota. Per altre informazioni, vedere about_Remote_Requirements.

In Windows Vista e nelle versioni successive di Windows, per creare una sessione PSSession in un computer locale, si deve avviare Windows PowerShell con l'opzione "Esegui come amministratore".

COS'È UNA SESSIONE?

Una sessione è un ambiente in cui viene eseguito Windows PowerShell.

Ogni volta che si avvia Windows PowerShell, viene creata una sessione per l'utente che quindi può eseguire comandi in quella sessione. È possibile aggiungere anche elementi alla propria sessione, come ad esempio moduli e snap-in ed è possibile creare elementi, come ad esempio variabili, funzioni e alias. Questi elementi esistono solo nella sessione e vengono eliminati quando la sessione termina.

È possibile anche creare sessioni gestite dall'utente, note come "sessioni di Windows PowerShell" o "PSSession", sul computer locale o su un computer remoto. Come una sessione predefinita, è possibile eseguire comandi in una sessione PSSession nonché aggiungere e creare elementi.

Tuttavia, a differenza della sessione che viene avviata automaticamente, è possibile controllare le sessioni PSSession create. È possibile ottenerle, crearle, configurarle e rimuoverle, disconnettersi e riconnettersi ed eseguire più comandi nella stessa sessione PSSession. La sessione PSSession è disponibile finché non viene eliminata oppure finché non scade.

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 al computer remoto per supportare la sessione.

Se si usa il parametro ComputerName del cmdlet Invoke-Command oppure Enter-PSSession per eseguire un comando remoto o per avviare una sessione interattiva, Windows PowerShell crea una sessione temporanea sul computer remoto e chiude la sessione non appena il comando è completo o appena termina la sessione interattiva. Non è possibile controllare queste sessioni temporanee e non è possibile usarli per più comandi o una singola sessione interattiva.

In Windows PowerShell la "sessione corrente" è la sessione che si sta usando. La "sessione corrente" può fare riferimento a qualsiasi sessione, inclusa una sessione temporanea o una sessione PSSession.

PERCHÉ USARE UNA SESSIONE PSSESSION?

Usare 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, come 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. Usare il parametro ComputerName dei cmdlet abilitati in remoto per eseguire un comando singolo o una serie di comandi non correlati in uno o più computer.

Quando si usa il parametro ComputerName di Invoke-Command o Enter-PSSession, Windows PowerShell stabilisce una connessione temporanea al computer remoto e quindi chiude la connessione al completamento del comando. Tutti gli elementi dati creati andranno persi alla chiusura della connessione.

Altri cmdlet con un parametro ComputerName, come ad esempio Get-Eventlog e Get-WmiObject, usano tecnologie di comunicazione remota per la raccolta di dati. Nessuno crea un connessione permanente come una sessione PSSession.

COME CREARE UNA SESSIONE PSSESSION

Per creare una sessione PSSession, usare il cmdlet New-PSSession. Per creare la sessione PSSession in un computer remoto, usare il parametro ComputerName del cmdlet New-PSSession.

Il comando seguente, ad esempio, 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 la sessione PSSession. È possibile salvare l'oggetto in una variabile quando si crea la sessione PSSession oppure è possibile usare un comando Get-PSSession per ottenere la sessione PSSession in un secondo momento.

Il comando seguente, ad esempio, crea una nuova sessione PSSession nel computer Server01 e salva l'oggetto risultante nella variabile $ps.

        $ps = New-PSSession -ComputerName Server01

COME CREARE SESSIONI PSSESSION IN PIÙ COMPUTER

Per creare sessioni PSSession in più computer, usare il parametro ComputerName del cmdlet New-PSSession. Immettere i nomi dei computer remoti in un elenco delimitato da virgole.

Per creare, ad esempio, sessioni PSSession nei computer Server01, Server02 e Server03, digitare:

        New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession crea una sessione PSSession in ogni computer remoto.

COME OTTENERE LE SESSIONI PSSESSION

Per ottenere le sessioni PSSession create nella sessione corrente, usare il cmdlet Get-PSSession senza il parametro ComputerName. Get-PSSession restituisce lo stesso tipo di oggetto restituito da New-PSSession.Inserire qui il corpo del testo.

Il comando seguente ottiene tutte le sessioni PSSession create nella sessione corrente.

        Get-PSSession

La visualizzazione predefinita delle sessioni PSSession presenta l'ID e un nome visualizzato predefinito. È possibile assegnare un nome visualizzato alternativo quando si crea la 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 le sessioni PSSession e le salva nella variabile $ps123.

        $ps123 = Get-PSSession

Quando si usano i cmdlet di PSSession, è possibile fare riferimento a una sessione PSSession in base all'ID, al nome o all'ID istanza (un GUID). Il comando seguente ottiene una sessione PSSession in base all'ID e lo salva nella variabile $ps01.

        $ps01 = Get-PSSession -Id 1

A partire da Windows PowerShell 3.0, le sessioni PSSession sono gestite nel computer remoto. Per ottenere le sessioni PSSession create su computer remoti particolari, usare il parametro ComputerName del cmdlet Get-PSSession. Il comando seguente ottiene le sessioni PSSession create nel computer Server01 remoto. Sono incluse le sessioni PSSession create nella sessione corrente e in altre sessioni nel computer locale o in altri computer.

        Get-PSSession -ComputerName Server01

In Windows PowerShell 2.0 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.

COME ESEGUIRE COMANDI IN UNA PSSESSION

Per eseguire un comando in una o più sessioni PSSession, usare il cmdlet Invoke-Command. Usare il parametro Session per specificare le sessioni PSSession e il parametro ScriptBlock per specificare il comando.

Per eseguire, ad esempio, un comando Get-ChildItem ("dir") in ognuna delle tre sessioni PSSession salvate nella variabile $ps123, digitare:

        Invoke-Command -Session $ps123 -ScriptBlock {Get-ChildItem}

COME ELIMINARE LE SESSIONI PSSESSION

Dopo aver terminato con la sessione PSSession, usare il cmdlet Remove-PSSession per eliminare la sessione PSSession e per rilasciare le risorse che stava usando.

        Remove-PSSession -Session $ps

- oppure -

        Remove-PSSession -Id 1

Per rimuovere una sessione PSSession da un computer remoto, usare il parametro ComputerName del cmdlet Remove-PSSession.

       Remove-PSSession -ComputerName Server01 -Id 1

Se non si elimina la sessione PSSession, questa resta disponibile per l'uso fino al timeout.

È anche possibile usare il parametro IdleTimeout del cmdlet New-PSSessionOption per impostare una scadenza per una sessione PSSession inattiva. Per altre informazioni, vedere New-PSSessionOption.

I CMDLET DI PSSESSION

    Cmdlet                Description
    -----------------     ------------------------------------------------------
    New-PSSession         Creates a new PSSession on a local or remote computer.

    Get-PSSession         Gets the PSSessions in the current session.

    Remove-PSSession      Deletes the PSSessions in the current session.

    Enter-PSSession       Starts an interactive session.

    Exit-PSSession        Ends an interactive session.
    
    Disconnect-PSSession  Disconnects a PSSession from the current session.

    Connect-PSSession     Connects a PSSession to the current session.
     
    Receive-PSSession     Gets the results of commands that ran in a disconnected
                          session.

Per un elenco dei cmdlet di PSSession, digitare:

       get-help *-PSSession

PER ALTRE INFORMAZIONI

Per altre informazioni sulle sessioni PSSession, vedere about_PSSession_Details.

VEDERE ANCHE

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Connect-PSSession

Disconnect-PSSession

Enter-PSSession

Exit-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession