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