Come eseguire comandi PowerShell su computer remoti
PowerShell Remoting consente di eseguire comandi PowerShell o accedere a sessioni PowerShell complete su sistemi Windows remoti. È simile a SSH per l'accesso ai terminali remoti su altri sistemi operativi.
PowerShell è bloccato per impostazione predefinita, pertanto è necessario abilitare PowerShell Remoting prima di utilizzarlo. Questo processo di installazione è un po 'più complesso se stai utilizzando un gruppo di lavoro anziché un dominio, ad esempio su una rete domestica, ma ti guideremo attraverso di esso.
Abilitare i servizi remoti di PowerShell sul PC a cui si desidera accedere da remoto
Il primo passaggio consiste nell'abilitare PowerShell Remoting sul PC a cui si desidera effettuare connessioni remote. Su quel PC, è necessario aprire PowerShell con privilegi amministrativi.
In Windows 10, premi Windows + X e scegli PowerShell (Admin) dal menu Power User.
In Windows 7 o 8, fai clic su Start, quindi digita "powershell". Fai clic con il pulsante destro del mouse sul risultato e scegli "Esegui come amministratore".
Nella finestra di PowerShell, digitare il seguente cmdlet (nome di PowerShell per un comando), quindi premere Invio:
Enable-PSRemoting -Force
Questo comando avvia il servizio WinRM, lo imposta per l'avvio automatico con il sistema e crea una regola firewall che consente le connessioni in entrata. Il -Vigore
parte del cmdlet indica a PowerShell di eseguire queste azioni senza chiedere conferma per ogni passaggio.
Se i tuoi PC fanno parte di un dominio, è tutto ciò che devi fare. Puoi saltare avanti per testare la tua connessione. Se i tuoi computer fanno parte di un gruppo di lavoro - che probabilmente si trovano in una rete domestica o di una piccola impresa - hai un po 'più di lavoro di installazione da fare.
Nota: il successo nella configurazione di servizi remoti in un ambiente di dominio dipende interamente dall'impostazione della rete. I servizi remoti potrebbero essere disabilitati, o addirittura abilitati automaticamente, dai criteri di gruppo configurati da un amministratore. Potresti anche non disporre delle autorizzazioni necessarie per eseguire PowerShell come amministratore. Come sempre, controlla con i tuoi amministratori prima di provare qualcosa di simile. Potrebbero avere buone ragioni per non permettere la pratica, o potrebbero essere disposti a configurarlo per te.
Imposta il tuo gruppo di lavoro
Se i tuoi computer non si trovano su un dominio, devi eseguire alcuni altri passaggi per configurare le cose. Dovresti aver già abilitato i servizi di Remoting sul PC a cui vuoi connetterti, come descritto nella sezione precedente.
Nota: affinché PowerShell Remoting funzioni in un ambiente di gruppo di lavoro, è necessario configurare la rete come rete privata e non pubblica. Per ulteriori informazioni sulla differenza e su come passare a una rete privata se disponi già di una rete pubblica, consulta la nostra guida sulle reti private e pubbliche.
Quindi, è necessario configurare l'impostazione TrustedHosts su entrambi i PC a cui si desidera connettersi e il PC (oi PC) da cui si desidera connettersi, in modo che i computer si fidino l'uno dell'altro. Puoi farlo in due modi.
Se sei su una rete domestica in cui vuoi andare avanti e fidati che qualsiasi PC possa connettersi da remoto, puoi digitare il seguente cmdlet in PowerShell (di nuovo, dovrai eseguirlo come amministratore).
Set-Item wsman: \ localhost \ client \ trustedhosts *
L'asterisco è un simbolo jolly per tutti i PC. Se invece si desidera limitare i computer che possono connettersi, è possibile sostituire l'asterisco con un elenco separato da virgole di indirizzi IP o nomi di computer per PC approvati.
Dopo aver eseguito tale comando, sarà necessario riavviare il servizio WinRM in modo che le nuove impostazioni abbiano effetto. Digita il seguente cmdlet e premi Invio:
Restart-Service WinRM
E ricorda, dovrai eseguire quei due cmdlet sul PC a cui vuoi connetterti, così come su tutti i PC da cui vuoi connetterti.
Testare la connessione
Ora che hai configurato il tuo PC per PowerShell Remoting, è il momento di testare la connessione. Sul PC da cui si desidera accedere al sistema remoto, digitare il seguente cmdlet in PowerShell (sostituendo "COMPUTER" con il nome o l'indirizzo IP del PC remoto), quindi premere Invio:
Test-WsMan COMPUTER
Questo semplice comando verifica se il servizio WinRM è in esecuzione sul PC remoto. Se si completa correttamente, vedrai le informazioni sul servizio WinRM del computer remoto nella finestra, a indicare che WinRM è abilitato e il tuo PC può comunicare. Se il comando fallisce, vedrai invece un messaggio di errore.
Esegui un singolo comando remoto
Per eseguire un comando sul sistema remoto, utilizzare Invoke-Command
cmdlet usando la seguente sintassi:
Invoke-Command -ComputerName COMPUTER -ScriptBlock COMMAND -credential USERNAME
"COMPUTER" rappresenta il nome del PC remoto o l'indirizzo IP. "COMANDO" è il comando che vuoi eseguire. "USERNAME" è il nome utente che si desidera eseguire il comando come sul computer remoto. Ti verrà richiesto di inserire una password per il nome utente.
Ecco un esempio. Voglio vedere il contenuto della directory C: \ su un computer remoto con l'indirizzo IP 10.0.0.22. Voglio usare il nome utente "wjgle", quindi vorrei usare il seguente comando:
Invoke-Command -ComputerName 10.0.0.22 -ScriptBlock Get-ChildItem C: \ -credential wjgle
Avvia una sessione remota
Se si hanno diversi cmdlet da eseguire sul PC remoto, invece di digitare ripetutamente il cmdlet Invoke-Command e l'indirizzo IP remoto, è possibile avviare invece una sessione remota. Basta digitare il seguente cmdlet e premere Invio:
Enter-PSSession -ComputerName COMPUTER -Credential USER
Di nuovo, sostituire "COMPUTER" con il nome o l'indirizzo IP del PC remoto e sostituire "USER" con il nome dell'account utente che si desidera richiamare.
Il tuo prompt cambia per indicare il computer remoto a cui sei connesso, ed è possibile eseguire qualsiasi numero di cmdlet di PowerShell direttamente sul sistema remoto.