Condividi tramite


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.

Vedi anche