Condividi tramite


about_Remote

Descrizione breve

Descrive 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 vengono eseguiti 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 in modo da 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 Enter-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 Invoke-Command per 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 permanente

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 andranno perse.

Per creare una connessione permanente 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 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 delle variabili. Per eseguire 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 SESSIONE PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Poiché la sessione PSSession usa una connessione permanente, è possibile eseguire un altro comando nella stessa sessione 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 dei computer nel valore del parametro ComputerName di Invoke-Command. Separare i nomi con virgole.

Ad esempio, il comando seguente esegue un Get-Culture comando 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 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 dei 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 alcun 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 interrupt al computer remoto in cui termina il comando remoto.

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 PSSession e sulle connessioni persistenti, vedere about_PSSessions.

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

Vedi anche