Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile eseguire comandi in uno o centinaia di computer con un unico comando di PowerShell. Windows PowerShell supporta il calcolo remoto usando varie tecnologie, tra cui WMI, RPC e WS-Management.
PowerShell supporta la comunicazione remota WMI, WS-Management e SSH. In PowerShell 7 e versioni successive, RPC è supportato solo in Windows.
Per altre informazioni sulla comunicazione remota in PowerShell, vedere gli articoli seguenti:
Comunicazione remota di Windows PowerShell senza configurazione
Molti cmdlet di Windows PowerShell hanno un parametro ComputerName che consente di raccogliere dati e cambiare le impostazioni di uno o più computer remoti. Questi cmdlet usano diversi protocolli di comunicazione e sono supportati in tutti i sistemi operativi senza alcuna configurazione speciale.
Questi cmdlet sono i seguenti:
- Restart-Computer
- Test-Connessione
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
In genere, i cmdlet che supportano la comunicazione remota senza configurazioni speciali includono il parametro ComputerName e non includono invece il parametro Session. Per trovare questi cmdlet nella sessione, digitare:
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Comunicazione remota di Windows PowerShell.
Usando il protocollo WS-Management, la comunicazione remota di Windows PowerShell consente di eseguire qualsiasi comando di Windows PowerShell in uno o più computer remoti. È possibile stabilire connessioni permanenti, avviare sessioni interattive ed eseguire script nei computer remoti.
Per usare il remoting di Windows PowerShell, è necessario configurare il computer remoto per la gestione remota. Per altre informazioni, incluse le istruzioni, vedere Informazioni sui requisiti remoti.
Dopo aver configurato la comunicazione remota di Windows PowerShell, sono disponibili molte strategie di comunicazione remota. Questo articolo elenca solo alcuni di essi. Per altre informazioni, vedere Informazioni su Remote.
Avviare una sessione interattiva
Per avviare una sessione interattiva con un singolo computer remoto, usare 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 remoto. Tutti i comandi digitati al prompt vengono eseguiti nel computer remoto e i risultati vengono visualizzati nel computer locale.
Per terminare la sessione interattiva, digitare:
Exit-PSSession
Per altre informazioni sui Enter-PSSession
cmdlet e Exit-PSSession
, vedere:
Eseguire un comando remoto
Per eseguire un comando in uno o più computer, usare il cmdlet Invoke-Command . Ad esempio, per eseguire un comando Get-UICulture nei computer remoti Server01 e Server02, digitare:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}
L'output viene restituito al 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
Eseguire uno script
Per eseguire uno script in uno o più computer remoti, usare il parametro FilePath del Invoke-Command
cmdlet . Lo script deve essere attivo o accessibile al computer locale. I risultati vengono restituiti al computer locale.
Ad esempio, il comando seguente esegue lo DiskCollect.ps1
script nei computer remoti, Server01 e Server02.
Invoke-Command -ComputerName Server01, Server02 -FilePath C:\Scripts\DiskCollect.ps1
Stabilire una connessione permanente
Usare il New-PSSession
cmdlet per creare una sessione permanente in un computer remoto. Nell'esempio seguente vengono create sessioni remote in Server01 e Server02. Gli oggetti sessione vengono archiviati nella $s
variabile .
$s = New-PSSession -ComputerName Server01, Server02
Una volta stabilite le sessioni, è possibile eseguire qualsiasi comando al loro interno. Poiché le sessioni sono permanenti, è possibile raccogliere dati da un comando e usarli in un altro comando.
Ad esempio, il comando seguente esegue un Get-HotFix
comando nelle sessioni nella $s
variabile e salva i risultati nella $h
variabile . 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 usare i dati nella $h
variabile con altri comandi nella stessa sessione. I risultati vengono visualizzati nel computer locale. Per esempio:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Accesso remoto avanzato
PowerShell include cmdlet che consentono di:
- Configurare e creare sessioni remote sia dalle estremità locali che da quella remota
- Creare sessioni personalizzate e limitate
- Importare comandi da una sessione remota che viene effettivamente eseguita in modo implicito nella sessione remota
- Configurare la sicurezza di una sessione remota
PowerShell su Windows include un provider WSMan. Il provider crea un'unità WSMan:
che consente di spostarsi attraverso una gerarchia di impostazioni di configurazione nel computer locale e nei computer remoti.
Per altre informazioni sul provider WSMan, vedere Provider WSMan e About WS-Management Cmdlets oppure nella console di Windows PowerShell digitare Get-Help WSMan
.
Per altre informazioni, vedere:
- Domande frequenti sulla comunicazione remota di PowerShell
- Register-PSSessionConfiguration
- Import-PSSession
Per ottenere aiuto sugli errori di accesso remoto, vedere about_Remote_Troubleshooting.