Remoting di Windows PowerShell
Il telecomando di Windows PowerShell, che utilizza il protocollo WS-Management, consente di eseguire qualsiasi comando di Windows PowerShell su uno o più computer remoti. Ti consente di stabilire connessioni permanenti, avviare sessioni interattive 1: 1 ed eseguire script su più computer. Per utilizzare il telecomando di Windows PowerShell, il computer remoto deve essere configurato per la gestione remota. Dopo aver configurato il remoting di Windows PowerShell, sono disponibili molte strategie di remoting. Il resto di questo documento ne elenca solo alcuni.
Inizia 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 quel momento in poi, tutti i comandi digitati al prompt vengono eseguiti sul computer remoto e i risultati vengono visualizzati sul computer locale.
Per terminare la sessione interattiva, digitare:
Exit-PSSession
Esegui un comando remoto
Per eseguire qualsiasi comando su uno o più computer remoti, utilizzare il cmdlet Invoke-Command. Ad esempio, per eseguire un comando Get-UICulture sui computer remoti Server01 e Server02, digitare:
invoke-command -computername Server01, Server02 {get-UICulture}
L'output viene restituito al tuo 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
Esegui uno script
Per eseguire uno script su uno o più computer remoti, utilizzare il parametro FilePath del cmdlet Invoke-Command. Lo script deve essere attivo o accessibile sul computer locale. I risultati vengono restituiti al computer locale.
Ad esempio, il comando seguente esegue lo script DiskCollect.ps1 sui computer remoti Server01 e Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Stabilire una connessione persistente
Per eseguire una serie di comandi correlati che condividono dati, creare una sessione sul computer remoto, quindi utilizzare il cmdlet Invoke-Command per eseguire i comandi nella sessione creata. Per creare una sessione remota, utilizzare il cmdlet New-PSSession.
Ad esempio, il comando seguente crea una sessione remota sul computer Server01 e un'altra sessione remota sul computer Server02. Salva gli oggetti della sessione nella variabile $ s.
$s = new-pssession -computername Server01, Server02
Ora che le sessioni sono state stabilite, è possibile eseguire qualsiasi comando in esse. E poiché le sessioni sono persistenti, è possibile raccogliere dati in un comando e utilizzarli in un comando successivo.
Ad esempio, il comando seguente esegue un comando Get-Hotfix nelle sessioni nella variabile $ s e salva i risultati nella variabile $ h. La variabile $ h viene creata in ciascuna delle sessioni in $ s, ma non esiste nella sessione locale.
invoke-command -session $s {$h = get-hotfix}
Ora puoi usare i dati nella variabile $ h nei comandi successivi, come quello seguente. I risultati vengono visualizzati sul computer locale.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }