about_Remote
Breve descrizione
Viene descritto come eseguire comandi remoti in PowerShell.
Descrizione lunga
È possibile eseguire comandi remoti in un singolo o più computer remoti usando una connessione temporanea o persistente. È anche possibile avviare una sessione interattiva con un singolo computer remoto.
Nota
Per usare la comunicazione remota di PowerShell, è necessario configurare i computer locali e remoti per la comunicazione remota. Per altre informazioni, vedere about_Remote_Requirements.
Come avviare una sessione interattiva
Il modo più semplice per eseguire comandi remoti consiste nell'avviare una sessione interattiva con un computer remoto.
All'avvio della sessione, i comandi digitati nel computer remoto, come se li digitassero direttamente nel computer remoto. È possibile connettersi a un solo computer in ogni sessione interattiva.
Per avviare una sessione interattiva, usare il Enter-PSSession
cmdlet. Il comando seguente avvia una sessione interattiva con il computer Server01:
Enter-PSSession Server01
PowerShell modifica il prompt dei comandi per includere il nome del computer remoto.
Server01\PS>
È ora possibile digitare i comandi nel computer Server01.
Per terminare una sessione interattiva, digitare:
Exit-PSSession
Per altre informazioni, vedere Invio-PSSession.
Come eseguire un comando remoto
Per eseguire altri comandi nei computer remoti, usare il Invoke-Command
cmdlet.
Per eseguire un singolo comando o alcuni comandi non correlati, usare il parametro ComputerName di per Invoke-Command
specificare i computer remoti. Usare il parametro ScriptBlock per specificare il comando.
Ad esempio, il comando seguente esegue un Get-Culture
comando nel computer Server01.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
Come creare una connessione persistente
Quando si usa il parametro ComputerName del Invoke-Command
cmdlet, PowerShell stabilisce una connessione temporanea al computer remoto. Chiude la connessione al termine del comando. Tutte le variabili o le funzioni definite in questa sessione temporanea vengono perse.
Per creare una connessione persistente a un computer remoto, usare il New-PSSession
cmdlet. Ad esempio, il comando seguente crea psSessioni nei computer Server01 e Server02 e quindi salva le sessioni PSSession nella $s
variabile.
$s = New-PSSession -ComputerName Server01, Server02
Come eseguire i comandi in una sessione PSSession
Con una sessione PSSession è possibile eseguire una serie di comandi remoti che condividono dati, ad esempio funzioni, alias e valori di variabili. Per eseguire i comandi in una sessione PSSession, usare il parametro Session del Invoke-Command
cmdlet.
Ad esempio, il comando seguente usa il Invoke-Command
cmdlet per eseguire un Get-Process
comando nelle sessioni PSSession nei computer Server01 e Server02.
Il comando salva i processi in una $p
variabile in ogni PSSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Poiché PSSession usa una connessione persistente, è possibile eseguire un altro comando nella stessa PSSession che usa la $p
variabile. Il comando seguente conta il numero di processi salvati in $p
.
Invoke-Command -Session $s -ScriptBlock {$p.count}
Come eseguire un comando remoto in più computer
Per eseguire un comando remoto in più computer, digitare tutti i nomi di computer nel valore del parametro ComputerName di Invoke-Command
. Separare i nomi con virgole.
Ad esempio, il comando seguente esegue un Get-Culture
comando su tre computer:
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
È anche possibile eseguire un comando in più PSSessioni. I comandi seguenti creano PSSessions nei computer Server01, Server02 e Server03 e quindi eseguono un Get-Culture
comando 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 locali, digitare il nome del computer locale, digitare un punto (.
) o digitare localhost
.
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
Come eseguire uno script sui computer remoti
Per eseguire uno script locale nei computer remoti, usare il parametro FilePath di Invoke-Command
. Non è necessario copiare file. Ad esempio, il comando seguente esegue lo Sample.ps1
script nei computer S1 e S2:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell restituisce i risultati dello script nel computer locale.
Come arrestare un comando remoto
Per interrompere un comando, premere CTRL+C. PowerShell passa la richiesta di interruzione al computer remoto in cui termina 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 dati remoti, configurazioni speciali, problemi di sicurezza e altre domande frequenti, vedere Domande frequenti sulla comunicazione remota di PowerShell.
Per informazioni sulla risoluzione degli errori di comunicazione remota, vedere about_Remote_Troubleshooting.
Per informazioni sulle sessioni PSSessioni e sulle connessioni persistenti, vedere about_PSSessions.
Per informazioni sui processi in background di PowerShell, vedere about_Jobs.