È possibile eseguire comandi in uno o in centinaia di computer con un solo comando di Windows PowerShell. In Windows PowerShell la comunicazione remota è supportata tramite varie tecnologie, incluse Strumentazione gestione Windows (WMI), RPC e Gestione remota Windows (WS-Management).

Comunicazione remota senza configurazione

Molti cmdlet di Windows PowerShell dispongono di un parametro ComputerName che consente di raccogliere dati e modificare impostazioni in uno o più computer remoti. Sono basati su diverse tecnologie di comunicazione e molti possono essere utilizzati in tutti i sistemi operativi Windows supportati da Windows PowerShell senza necessità di eseguire particolari operazioni di configurazione.

Sono inclusi i cmdlet elencati di seguito:

In genere, i cmdlet che supportano la comunicazione remota senza necessità di eseguire operazioni di configurazione particolari dispongono di un parametro ComputerName e non di un parametro Session. Per trovare questi cmdlet nella sessione, digitare:

get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Comunicazione remota di Windows PowerShell

La comunicazione remota di Windows PowerShell, basata sul protocollo WS-Management, consente di eseguire qualsiasi comando di Windows PowerShell in uno o più computer remoti. Consente di stabilire connessioni permanenti, di avviare sessioni interattive 1:1 e di eseguire script in più computer.

Per utilizzare la comunicazione remota di Windows PowerShell, è necessario configurare il computer remoto per la gestione remota. Per ulteriori informazioni e per le istruzioni, vedere about_Remote_Requirements.

In seguito alla configurazione della comunicazione remota di Windows PowerShell, vengono rese disponibili molte strategie remote. Nella parte rimanente di questo documento sono elencate alcune di queste strategie. Per ulteriori informazioni, vedere about_Remote e about_Remote_FAQ.

Avviare una sessione interattiva

Per avviare una sessione interattiva con un singolo computer remoto, utilizzare il cmdlet Enter-PSSession. Ad esempio, per avviare una sessione interattiva con il computer remoto Server01, digitare:

enter-pssession Server01

Il prompt dei comandi cambia per visualizzare il nome del computer a cui si è connessi. Da questo punto in poi, qualsiasi comando digitato al prompt verrà eseguito nel computer remoto e i risultati verranno visualizzati nel computer locale.

Per terminare la sessione interattiva, digitare:

exit-pssession

Per ulteriori informazioni sui cmdlet Enter-PSSession e Exit-PSSession, vedere Enter-PSSession e Exit-PSSession.

Eseguire un comando remoto

Per eseguire qualsiasi comando in uno o più computer remoti, utilizzare il cmdlet Invoke-Command. Ad esempio, per eseguire un comando Get-UICulture nei computer remoti Server01 e Server02, digitare:

invoke-command -computername Server01, Server02 {get-UICulture}

L'output viene restituito nel computer.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Per ulteriori informazioni sul cmdlet Invoke-Command, vedere Invoke-Command.

Eseguire uno script

Per eseguire uno script in uno o più computer remoti, utilizzare il parametro FilePath del cmdlet Invoke-Command. Lo script deve trovarsi nel computer locale o essere accessibile a tale computer. I risultati vengono restituiti nel computer locale.

Il comando seguente, ad esempio, consente di eseguire lo script DiskCollect.ps1 nei computer remoti Server01 e Server02:

invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Per ulteriori informazioni sul cmdlet Invoke-Command, vedere Invoke-Command.

Stabilire una connessione permanente

Per eseguire una serie di comandi correlati per la condivisione di dati, creare una sessione nel computer remoto e utilizzare il cmdlet Invoke-Command per eseguire comandi nella sessione creata. Per creare una sessione remota, utilizzare il cmdlet New-PSSession.

Ad esempio, il comando seguente consente di creare una sessione remota nel computer Server01 e un'altra nel computer Server02. Gli oggetti sessione vengono salvati nella variabile $s.

$s = new-pssession -computername Server01, Server02

Dopo avere stabilito le sessioni, è possibile eseguire qualsiasi comando. Poiché si tratta di sessioni permanenti, è possibile raccogliere dati in un comando e utilizzarli in un comando successivo.

Ad esempio, con il comando seguente viene eseguito un comando Get-Hotfix nelle sessioni nella variabile $s e i risultati vengono salvati nella variabile $h. La variabile $h viene creata in ognuna delle sessioni in $s, ma non esiste nella sessione locale.

invoke-command -session $s {$h = get-hotfix}

È ora possibile utilizzare i dati nella variabile $h nei comandi successivi, ad esempio quello riportato di seguito. I risultati vengono visualizzati nel computer locale.

invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"

Comunicazione remota avanzata

La gestione remota di Windows PowerShell ha inizio in questo ambito. Mediante i cmdlet installati con Windows PowerShell, è possibile stabilire e configurare sessioni remote da computer locali e remoti, creare sessioni personalizzate e limitate, consentire agli utenti di importare comandi da una sessione remota in esecuzione in modo implicito nella sessione remota, configurare la sicurezza di una sessione remota e molto altro.

Per semplificare le operazioni di configurazione remota, in Windows PowerShell è disponibile un provider Gestione remota Windows (WS-Management). L'unità WSMAN: creata dal provider consente di spostarsi all'interno di una gerarchia di impostazioni di configurazione nel computer locale e nei computer remoti. Per ulteriori informazioni sul provider Gestione remota Windows (WS-Management), vedere WSMan Provider e about_WS-Management_Cmdlets oppure digitare "get-help wsman" nella console di Windows PowerShell.

Per ulteriori informazioni, vedere about_Remote_FAQ, New-PSSessionConfiguration e Import-PSSession. Per informazioni sugli errori di comunicazione remota, vedere about_Remote_Troubleshooting.

Vedere anche




Argomenti della Guida