ARGOMENTO
    about_Remote

DESCRIZIONE BREVE
    Descrive come eseguire comandi remoti in Windows PowerShell.


DESCRIZIONE DETTAGLIATA
    È possibile eseguire comandi remoti su un solo computer o su più 
    computer tramite una connessione temporanea o permanente. È 
    possibile avviare una sessione interattiva con un unico computer 
    remoto.
    
    In questo argomento vengono forniti una serie di esempi che 
    illustrano come eseguire diversi tipi di comando remoto. Dopo 
    avere provato questi comandi di base, leggere gli argomenti della 
    Guida che descrivono ogni cmdlet utilizzato in questi comandi. In tali 
    argomenti vengono forniti dettagli e viene illustrato come è 
    possibile modificare i comandi per soddisfare le necessità.

    Nota: per utilizzare Windows PowerShell in modalità remota, è 
          necessario configurare i computer locale e remoto per la 
          comunicazione remota. Per ulteriori informazioni, vedere 
          about_Remote_Requirements. 
          

 MODALITÀ DI AVVIO DI UNA SESSIONE INTERATTIVA (ENTER-PSSESSION)

     Il modo più semplice per eseguire comandi remoti consiste 
     nell'avviare una sessione interattiva con un computer remoto. 

     Quando la sessione viene avviata, i comandi che si digitano 
     vengono eseguiti sul computer remoto, come se fossero stati digitati 
     direttamente sul computer remoto. È possibile connettersi a un solo 
     computer in ogni sessione interattiva. 

     Per avviare a una sessione interattiva, utilizzare il cmdlet 
     Enter-PSSession. Il comando seguente avvia una sessione 
     interattiva con il computer Server01:

	enter-pssession server01

     Il prompt dei comandi viene modificato per indicare la connessione al 
     computer Server01.

	Server01\PS> 

     A questo punto è possibile digitare i comandi sul computer Server01. 

     Per terminare la sessione interattiva, digitare:

	exit-pssession


     Per ulteriori informazioni, vedere Enter-PSSession.

      

 MODALITÀ DI UTILIZZO DI CMDLET CHE DISPONGONO DI UN PARAMETRO 
 COMPUTERNAME PER OTTENERE I DATI REMOTI

    Diversi cmdlet dispongono di un parametro ComputerName che consente di 
    ottenere oggetti dai computer remoti. 

    Poiché questi cmdlet non utilizzano la comunicazione remota di Windows 
    PowerShell da comunicare, è possibile utilizzare il parametro 
    ComputerName di questi cmdlet in qualsiasi computer che esegue 
    Windows PowerShell. Non è necessario che i computer siano configurati 
    per la comunicazione remota di Windows PowerShell né che soddisfino i 
    requisiti di sistema per la comunicazione remota. 

    I cmdlet seguenti dispongono di un parametro ComputerName:
 
        Clear-EventLog  Limit-EventLog
        Get-Counter       New-EventLog
        Get-EventLog   Remove-EventLog
        Get-HotFix        Restart-Computer
        Get-Process       Show-EventLog
        Get-Service       Show-Service
        Get-WinEvent   Stop-Computer
        Get-WmiObject   Write-EventLog

  
    Il comando seguente, ad esempio, ottiene i servizi del computer remoto 
    Server01:

	get-service -computername server01

         

      
    In genere, i cmdlet che supportano la comunicazione remota senza  
    necessità di eseguire operazioni di configurazione particolari dispongono 
    di un parametro ComputerName e non di un parametro Session.
    Per trovare questi cmdlet nella sessione, digitare:

	get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}



 MODALITÀ DI ESECUZIONE DI UN COMANDO REMOTO

    Per eseguire altri comandi in computer remoti, utilizzare il 
    cmdlet Invoke-Command.

    Per eseguire un solo comando o pochi comandi non correlati, 
    utilizzare il parametro ComputerName di Invoke-Command per 
    specificare i computer remoti. Utilizzare il parametro ScriptBlock per 
    specificare il comando.

    Il comando seguente, ad esempio, esegue un comando Get-Culture 
    nel computer Server01.

	invoke-command -computername Server01 -scriptblock {get-culture}

    Il parametro ComputerName è progettato per situazioni in cui si 
    esegue un solo comando o molti comandi non correlati in uno o in molti 
    computer. Per stabilire una connessione permanete a un computer remoto, 
    utilizzare il parametro Session.

 
 MODALITÀ DI CREAZIONE DI UNA CONNESSIONE PERMANENTE (PSSESSION)

    Quando si utilizza il parametro ComputerName del cmdlet 
    Invoke-Command, Windows PowerShell stabilisce una connessione 
    solo per il comando. Quindi, chiude la connessione quando il comando è 
    completo. Qualsiasi variabile o funzione definita nel comando viene persa.

    Per creare una connessione permanente a un computer remoto, 
    utilizzare il cmdlet New-PSSession. Il comando seguente, ad 
    esempio, crea sessioni PSSession nei computer Server01 e 
    Server02, quindi salva le sessioni PSSession nella variabile $s.

	$s = new-pssession -computername Server01, Server02


 MODALITÀ DI ESECUZIONE DI COMANDI IN UNA SESSIONE PSSESSION
  
    Con una sessione PSSession, è possibile eseguire una serie di 
    comandi remoti che condividono dati, funzioni, alias e valori 
    delle variabili. Per eseguire comandi in una sessione PSSession, 
    utilizzare il parametro Session del cmdlet Invoke-Command. 

    Il comando seguente, ad esempio, utilizza il cmdlet Invoke-Command per 
    eseguire un comando Get-Process nelle sessioni PSSession nei computer 
    Server01 e Server02. Il comando salva i processi in una variabile $p 
    in ogni sessione PSSession.

        invoke-command -session $s -scriptblock {$p = get-process}

    Poiché la sessione PSSession utilizza una connessione permanente, 
    è possibile eseguire un altro comando nella stessa sessione 
    PSSession che utilizza la variabile $p.
    Il comando seguente conteggia il numero di processi salvati in $p.

        invoke-command -session $s -scriptblock {$p.count} 

 MODALITÀ DI ESECUZIONE DI UN COMANDO REMOTO IN PIÙ COMPUTER

    Per eseguire un comando remoto in più computer, digitare tutti i 
    nomi dei computer nel valore del parametro ComputerName di 
    Invoke-Command. Separare i nomi con virgole.

    Il comando seguente, ad esempio, esegue un comando Get-Culture in 
    tre computer:

	invoke-command -computername S1, S2, S3 -scriptblock {get-culture}

    È anche possibile eseguire un comando in più sessioni PSSession. 
    I comandi seguenti creano sessioni PSSession nei computer 
    Server01, Server02 e Server03 e il comando Get-Culture in ognuna delle 
    sessioni PSSession.

        $s = new-pssession -computername S1, S2, S3 invoke-command 
        -session $s -scriptblock {get-culture}


    Per includere l'elenco di computer del computer locale, digitare 
    il nome del computer locale, digitare un punto (.) o digitare 
    "localhost". 

	invoke-command -computername S1, S2, S3, localhost -scriptblock 
	{get-culture}


 MODALITÀ DI ESECUZIONE DI UNO SCRIPT NEI COMPUTER REMOTI

    Per eseguire uno script locale nei computer remoti, utilizzare il 
    parametro FilePath di Invoke-Command.

    Il comando seguente, ad esempio, eseguire lo script Sample.ps1 
    nei computer S1 ed S2:

        invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1

    I risultati dello script vengono restituiti al computer locale. Non è 
    necessario copiare alcun file.
  

 MODALITÀ DI ARRESTO DI UN COMANDO REMOTO

   Per interrompere un comando, premere CTRL+C. La richiesta di 
   interruzione viene passata al computer remoto, dove viene 
   terminato il comando remoto.



PER ULTERIORI INFORMAZIONI

    -- Per informazioni sui requisiti di sistema per la comunicazione 
       remota, vedere about_Remote_Requirements.

    -- Per informazioni sulla formattazione dell'output remoto, vedere 
       about_Remote_Output.

    -- Per informazioni sul funzionamento della comunicazione remota, 
       su come gestire i dati remoti, su configurazioni speciali, su 
       problemi di protezione e su altre domande frequenti, vedere 
       about_Remote_FAQ.

    -- Per informazioni sulla risoluzione dei problemi di 
       comunicazione remota, vedere about_Remote_Troubleshooting.

    -- Per informazioni su sessioni PSSession e connessioni 
       permanenti, vedere about_PSSessions.

    -- Per informazioni sui processi in background di Windows 
       PowerShell, vedere about_Jobs.

PAROLE CHIAVE
    about_Remoting

VEDERE ANCHE
    about_PSSessions
    about_Remote_Requirements
    about_Remote_FAQ
    about_Remote_TroubleShooting
    Enter-PSSession
    Invoke-Command
    New-PSSession




Argomenti della Guida