about_Remote
Aggiornamento: maggio 2014
Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
ARGOMENTO
about_Remote
DESCRIZIONE BREVE
In questo articolo viene descritto come eseguire comandi remoti in Windows PowerShell.
DESCRIZIONE LUNGA
È possibile eseguire i comandi remoti in un singolo computer o in più computer tramite una connessione permanente o temporanea. È anche possibile avviare una sessione interattiva con un solo computer remoto.
In questo argomento viene fornita una serie di esempi per illustrare come eseguire diversi tipi di comandi remoti. Dopo aver eseguito questi comandi di base, leggere gli argomenti della Guida che descrivono ogni cmdlet utilizzato in questi comandi. Gli argomenti forniscono i dettagli e spiegano come è possibile modificare i comandi per soddisfare le proprie esigenze.
Nota
Per usare la comunicazione remota di Windows PowerShell®, il computer remoto e quello locale devono essere configurati per l'utilizzo in remoto. Per altre informazioni, vedere about_Remote_Requirements.
COME AVVIARE UNA SESSIONE INTERATTIVA (ENTER-PSSESSION)
Il modo più semplice per eseguire i comandi remoti consiste nell'avviare una sessione interattiva con un computer remoto.
Quando viene avviata la sessione, i comandi digitati vengono eseguiti nel computer remoto, come se venissero digitati direttamente nel computer remoto. In ogni sessione interattiva è possibile connettersi a un solo computer.
Per avviare una sessione interattiva, usare il cmdlet Enter-PSSession. Il comando seguente avvia una sessione interattiva nel computer Server01:
Enter-PSSession Server01
Il prompt dei comandi cambia per indicare che l'utente è connesso al computer Server01.
Server01\PS>
A questo punto, è possibile digitare i comandi nel computer Server01.
Per terminare una sessione interattiva, digitare:
Exit-PSSession
Per altre informazioni, vedere Enter-PSSession.
COME USARE I CMDLET CON UN PARAMETRO COMPUTERNAME PER OTTENERE DATI REMOTI
Alcuni cmdlet presentano un parametro ComputerName che consente di recuperare oggetti da computer remoti.
Poiché questi cmdlet non usano la comunicazione remota di Windows PowerShell basata su WS-Management, è possibile usare il parametro ComputerName di questi cmdlet in qualsiasi computer che esegue Windows PowerShell. I computer non devono essere configurati per la comunicazione remota di Windows PowerShell e non devono soddisfare i requisiti di sistema per la comunicazione remota.
I cmdlet seguenti presentano 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 Stop-Computer
Get-WinEvent Test-Connection
Get-WmiObject Write-EventLog
Ad esempio, il comando seguente ottiene i servizi nel computer remoto Server01:
Get-Service -ComputerName Server01
In genere, i cmdlet che supportano la comunicazione remota senza configurazione speciale hanno un parametro ComputerName, mentre non hanno un parametro Session. Per trovare questi cmdlet nella sessione, digitare:
Get-Command | where { $_.Parameters.Keys -contains "ComputerName" -and $_.Parameters.Keys -NotContains "Session"}
COME ESEGUIRE UN COMANDO REMOTO
Per eseguire altri comandi su computer remoti, usare il cmdlet Invoke-Command.
Per eseguire un singolo comando o alcuni comandi non correlati, utilizzare il parametro ComputerName di Invoke-Command per specificare i computer remoti. Usare il parametro ScriptBlock per specificare il comando.
Ad esempio, il seguente comando esegue un comando Get-Culture nel computer Server01.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
Il parametro ComputerName è progettato per la situazione in cui si esegue un singolo comando o alcuni comandi non correlati in uno o più computer. Per stabilire una connessione permanente a un computer remoto, usare il parametro Session.
COME CREARE UNA CONNESSIONE PERMANENTE (PSSESSION)
Quando si usa il parametro ComputerName del cmdlet Invoke-Command, Windows PowerShell stabilisce una connessione solo per il comando, quindi chiude la connessione quando il comando viene completato. Variabili o funzioni definite nel comando vengono perse.
Per creare una connessione permanente a un computer remoto, usare il cmdlet New-PSSession. Ad esempio, il comando seguente crea PSSession nei computer Server01 e Server02 e quindi salva le PSSession nella variabile $s.
$s = New-PSSession -ComputerName Server01, Server02
COME ESEGUIRE COMANDI IN UNA PSSESSION
Con una PSSession, è possibile eseguire una serie di comandi remoti che condividono dati, quali funzioni, alias e valori delle variabili. Per eseguire comandi in una PSSession, usare il parametro Session del cmdlet Invoke-Command.
Il comando seguente, ad esempio, usa il cmdlet Invoke-Command per eseguire un comando Get-Process nelle PSSession nei computer Server01 e Server02. Il comando salva i processi in una variabile $p in ogni PSSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Poiché la PSSession usa una connessione permanente, è possibile eseguire un altro comando nella stessa PSSession che usa la variabile $p. Il comando seguente conta il numero di processi salvati in $p.
Invoke-Command -Session $s -ScriptBlock {$p.count}
COME ESEGUIRE UN COMANDO REMOTO SU PIÙ COMPUTER
Per eseguire un comando remoto su più computer, digitare tutti i nomi dei computer nel valore del parametro ComputerName di Invoke-Command. Separare i nomi con virgole.
Ad esempio, il seguente comando esegue un comando Get-Culture in tre computer:
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
È anche possibile eseguire un comando in più Pssession. I seguenti comandi creano Pssession nei computer Server01, Server02 e Server03, quindi eseguono un comando Get-Culture in ogni Pssession.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Per includere l'elenco dei computer locali, digitare il nome del computer locale, digitare un punto (.) oppure digitare "localhost".
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
COME ESEGUIRE UNO SCRIPT SU COMPUTER REMOTI
Per eseguire uno script locale su computer remoti, usare il parametro FilePath di Invoke-Command.
Ad esempio, il seguente comando esegue lo script Sample.ps1 nei computer S1 e S2:Inserire corpo della sezione qui.
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
I risultati dello script vengono restituiti nel computer locale. Non è necessario copiare i file.
COME INTERROMPERE UN COMANDO REMOTO
Per interrompere un comando, premere CTRL+C. La richiesta di interrupt viene passata al computer remoto in cui termina il comando remoto.
PER ALTRE 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 sull'uso della comunicazione remota, sulla gestione dei dati remoti, sulle configurazioni speciali, sui problemi di sicurezza e altre domande frequenti, vedere about_Remote_FAQ.
-- Per assistenza nella risoluzione degli errori relativi alla comunicazione remota, vedere about_Remote_Troubleshooting.
-- Per informazioni su 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_Disconnected_Sessions
about_Remote_Requirements
about_Remote_FAQ
about_Remote_TroubleShooting
about_Remote_Variables
Enter-PSSession
Invoke-Command
New-PSSession