PowerShell è una potente console di comando inclusa nelle versioni moderne di Windows. Una delle sue funzioni più utili è la possibilità di eseguire comandi su server remoti. Questo può essere utile per gli amministratori di sistema che gestiscono più server Windows.
Passaggio 1: consentire l'accesso remoto
Innanzitutto, dobbiamo consentire l'accesso remoto. Sul server a cui si desidera accedere in remoto, aprire PowerShell con privilegi di amministratore (quindi fare clic con il tasto destro del mouse su PowerShell e fare clic su "Esegui come amministratore"). Eseguire il comando seguente:
Enable-PSRemoting -Force
Ciò avvia il servizio WinRM, si assicura che si avvii automaticamente e configura il firewall in modo da consentire le connessioni in entrata.
Sul computer (da cui si desidera connettersi), eseguire il comando seguente con privilegi di amministratore:
Enable-PSRemoting -Force
Dovremo assicurarci che entrambi i computer si fidino l'uno dell'altro. Per fare ciò, dobbiamo configurare l'impostazione "TrustedHosts". Se si desidera consentire connessioni al proprio computer / server da tutti i computer, eseguire:
Set-Item wsman:\localhost\client\trustedhosts *
Se si desidera limitare questo a determinati computer, utilizzare il seguente comando. Sostituisci l'elenco separato da virgole di 0.0.0.0, 1.1.1.1, 2.2.2.2 e 3.3.3.3 con gli indirizzi IP che avranno accesso.
Set-Item wsman:\localhost\client\trustedhosts 0.0.0.0,1.1.1.1,2.2.2.2,3.3.3.3
Ora riavvia WinRM:
Restart-Service WinRM
Passaggio 2: testare la connessione
Per testare la connessione, vai al computer da cui vuoi connetterti ed esegui:
Test-WsMan ipaddress
Sostituire ipaddresscon l'indirizzo IP dell'altro computer / server.
Passaggio 3: apertura delle porte
Il primo comando che abbiamo eseguito ( Enable-PSRemoting -Force) configurerà automaticamente il firewall in modo che accetti le connessioni in entrata per l'accesso remoto. Tuttavia, se c'è qualcosa di fronte al firewall (come il router), potrebbe essere necessario impostare anche il port forwarding. Le porte utilizzate sono:
- 5985 per HTTP
- 5986 per HTTPS
Passaggio 4: esecuzione dei comandi
Quanto segue viene utilizzato per eseguire comandi su un server remoto:
Invoke-Command -ComputerName ipaddress -ScriptBlock { command } -credential username
Sostituisci ipaddresscon l'indirizzo IP del server, commandcon il comando che desideri eseguire su quel server e usernamecon il nome utente dell'utente che eseguirà il comando.
Se non si desidera utilizzare Invoke-Commandper ogni singolo comando, è possibile invece avviare una sessione. Ogni comando digitato verrà quindi eseguito sul server remoto con le credenziali specificate. La sintassi per avviare una sessione è la seguente:
Enter-PSSession -ComputerName ipaddress -Credential username
Sostituisci ipaddresscon l'indirizzo IP del server e usernamecon l'utente che eseguirà il comando. Ogni comando che digiti in futuro verrà eseguito sul server remoto.