ARGOMENTO
about_Remote
DESCRIZIONE BREVE
Descrive come eseguire comandi remoti in Windows PowerShell.
DESCRIZIONE DETTAGLIATA
È possibile eseguire comandi remoti su un solo computer o su più
computer tramite una connessione temporanea o permanente. È
possibile avviare una sessione interattiva con un unico computer
remoto.
In questo argomento vengono forniti una serie di esempi che
illustrano come eseguire diversi tipi di comando remoto. Dopo
avere provato questi comandi di base, leggere gli argomenti della
Guida che descrivono ogni cmdlet utilizzato in questi comandi. In tali
argomenti vengono forniti dettagli e viene illustrato come è
possibile modificare i comandi per soddisfare le necessità.
Nota: per utilizzare Windows PowerShell in modalità remota, è
necessario configurare i computer locale e remoto per la
comunicazione remota. Per ulteriori informazioni, vedere
about_Remote_Requirements.
MODALITÀ DI AVVIO DI UNA SESSIONE INTERATTIVA (ENTER-PSSESSION)
Il modo più semplice per eseguire comandi remoti consiste
nell'avviare una sessione interattiva con un computer remoto.
Quando la sessione viene avviata, i comandi che si digitano
vengono eseguiti sul computer remoto, come se fossero stati digitati
direttamente sul computer remoto. È possibile connettersi a un solo
computer in ogni sessione interattiva.
Per avviare a una sessione interattiva, utilizzare il cmdlet
Enter-PSSession. Il comando seguente avvia una sessione
interattiva con il computer Server01:
enter-pssession server01
Il prompt dei comandi viene modificato per indicare la connessione al
computer Server01.
Server01\PS>
A questo punto è possibile digitare i comandi sul computer Server01.
Per terminare la sessione interattiva, digitare:
exit-pssession
Per ulteriori informazioni, vedere Enter-PSSession.
MODALITÀ DI UTILIZZO DI CMDLET CHE DISPONGONO DI UN PARAMETRO
COMPUTERNAME PER OTTENERE I DATI REMOTI
Diversi cmdlet dispongono di un parametro ComputerName che consente di
ottenere oggetti dai computer remoti.
Poiché questi cmdlet non utilizzano la comunicazione remota di Windows
PowerShell da comunicare, è possibile utilizzare il parametro
ComputerName di questi cmdlet in qualsiasi computer che esegue
Windows PowerShell. Non è necessario che i computer siano configurati
per la comunicazione remota di Windows PowerShell né che soddisfino i
requisiti di sistema per la comunicazione remota.
I cmdlet seguenti dispongono di 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 Show-Service
Get-WinEvent Stop-Computer
Get-WmiObject Write-EventLog
Il comando seguente, ad esempio, ottiene i servizi del computer remoto
Server01:
get-service -computername server01
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"}
MODALITÀ DI ESECUZIONE DI UN COMANDO REMOTO
Per eseguire altri comandi in computer remoti, utilizzare il
cmdlet Invoke-Command.
Per eseguire un solo comando o pochi comandi non correlati,
utilizzare il parametro ComputerName di Invoke-Command per
specificare i computer remoti. Utilizzare il parametro ScriptBlock per
specificare il comando.
Il comando seguente, ad esempio, esegue un comando Get-Culture
nel computer Server01.
invoke-command -computername Server01 -scriptblock {get-culture}
Il parametro ComputerName è progettato per situazioni in cui si
esegue un solo comando o molti comandi non correlati in uno o in molti
computer. Per stabilire una connessione permanete a un computer remoto,
utilizzare il parametro Session.
MODALITÀ DI CREAZIONE DI UNA CONNESSIONE PERMANENTE (PSSESSION)
Quando si utilizza il parametro ComputerName del cmdlet
Invoke-Command, Windows PowerShell stabilisce una connessione
solo per il comando. Quindi, chiude la connessione quando il comando è
completo. Qualsiasi variabile o funzione definita nel comando viene persa.
Per creare una connessione permanente a un computer remoto,
utilizzare il cmdlet New-PSSession. Il comando seguente, ad
esempio, crea sessioni PSSession nei computer Server01 e
Server02, quindi salva le sessioni PSSession nella variabile $s.
$s = new-pssession -computername Server01, Server02
MODALITÀ DI ESECUZIONE DI COMANDI IN UNA SESSIONE PSSESSION
Con una sessione PSSession, è possibile eseguire una serie di
comandi remoti che condividono dati, funzioni, alias e valori
delle variabili. Per eseguire comandi in una sessione PSSession,
utilizzare il parametro Session del cmdlet Invoke-Command.
Il comando seguente, ad esempio, utilizza il cmdlet Invoke-Command per
eseguire un comando Get-Process nelle sessioni PSSession nei computer
Server01 e Server02. Il comando salva i processi in una variabile $p
in ogni sessione PSSession.
invoke-command -session $s -scriptblock {$p = get-process}
Poiché la sessione PSSession utilizza una connessione permanente,
è possibile eseguire un altro comando nella stessa sessione
PSSession che utilizza la variabile $p.
Il comando seguente conteggia il numero di processi salvati in $p.
invoke-command -session $s -scriptblock {$p.count}
MODALITÀ DI ESECUZIONE DI 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.
Il comando seguente, ad esempio, esegue un comando Get-Culture 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 il comando Get-Culture 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 del computer locale, digitare
il nome del computer locale, digitare un punto (.) o digitare
"localhost".
invoke-command -computername S1, S2, S3, localhost -scriptblock
{get-culture}
MODALITÀ DI ESECUZIONE DI UNO SCRIPT NEI COMPUTER REMOTI
Per eseguire uno script locale nei computer remoti, utilizzare il
parametro FilePath di Invoke-Command.
Il comando seguente, ad esempio, eseguire lo script Sample.ps1
nei computer S1 ed S2:
invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1
I risultati dello script vengono restituiti al computer locale. Non è
necessario copiare alcun file.
MODALITÀ DI ARRESTO DI UN COMANDO REMOTO
Per interrompere un comando, premere CTRL+C. La richiesta di
interruzione viene passata al computer remoto, dove viene
terminato 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 i dati remoti, su configurazioni speciali, su
problemi di protezione e su altre domande frequenti, vedere
about_Remote_FAQ.
-- Per informazioni sulla risoluzione dei problemi di
comunicazione remota, vedere about_Remote_Troubleshooting.
-- Per informazioni su sessioni 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_Requirements
about_Remote_FAQ
about_Remote_TroubleShooting
Enter-PSSession
Invoke-Command
New-PSSession