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