Indice dei Contenuti
Powershell è uno strumento molto potente che permette di interagire a livelli molto profondi del sistema, per questo eseguire comandi powershell in computer remoti può essere sicuramente molto utile soprattutto per chi opera spesso con terminali remoti anche virtuali.
Vediamo come abilitare l’esecuzione di comandi powershell in computer remoti, oltre a capire se l’esecuzione è possibile in dominio o in workgroup, prima diamo una definizione a che cos’è Powershell.
Cos’è Powershell e cosa permette di fare
- Esecuzione di script: PowerShell consente di creare e di eseguire script per automatizzare una varietà di compiti, dalla configurazione di sistemi alla gestione di applicazioni.
- Accesso all’interfaccia di riga di comando (CLI): PowerShell fornisce un’interfaccia di riga di comando flessibile per interagire con il sistema operativo e con le applicazioni.
- Gestione di oggetti: PowerShell è basato su oggetti, il che significa che gli utenti possono manipolare oggetti come file, processi e servizi con comandi e script.
- Integrazione con Windows: PowerShell è integrato con Windows e offre accesso a un’ampia gamma di funzionalità e API di sistema.
- Ampia gamma di cmdlet: PowerShell include un’ampia gamma di cmdlet (comandi speciali) per eseguire diverse operazioni, dalla gestione dei file alla configurazione di rete.
Come abilitare l’esecuzione di comandi da remoto
Per procedere con l’abilitazione seguire questi step:
- Premere i pulsanti WIN + X ed aprire il terminale come admin
- Ora digitare
- Enable-PSRemoting -Force
- Una volta fatto, vedremo la schermata a video come di seguito ed il gioco è fatto.
Logicamente, in ambienti aziendali bisognerà accertarsi con l’amministratore di sistema la possibilità di eseguire l’operazione oltre a tenere in considerazione che potrebbero esserci delle policy attive o restrizioni a livello di firewall che possono impedire questo tipo di operazioni.
E in ambiente Workgroup come fare?
Per abilitare l’esecuzione di comandi remoti in un Workgroup bisogna procedere così:
Contrassegnare come attendibili i pc della rete con questo comando (sempre da un terminale come admin)
Set-Item wsman:\localhost\client\trustedhosts *
Al posto dell’asterisco è possibile inserire gli IP locali distanziati da una virgola. Successivamente riavviare il servizio WinRM così:
Restart-Service WinRM
Proviamo qualche comando da remoto
Ora è possibile provare ad eseguire alcuni comandi da remoto, come ad esempio:
Invoke-Command -ComputerName IP LOCALE -ScriptBlock { ipconfig } -credential administrator
Un altro comando, utile ad avviare la sessione remota è:
Enter-PSSession -ComputerName COMPUTER -Credential USER
dove al posto di COMPUTER andrà inserito l’IP locale del pc e al posto di USER il nome dell’account.
Tabella di 10 Comandi PowerShell Eseguibili da Remoto
Comando | Descrizione | Esempio |
---|---|---|
Get-Process | Visualizza i processi in esecuzione sul computer remoto. | Get-Process -ComputerName RemoteComputer |
Get-Service | Visualizza i servizi in esecuzione sul computer remoto. | Get-Service -ComputerName RemoteComputer |
Get-WMIObject | Recupera informazioni WMI dal computer remoto. | Get-WMIObject -ComputerName RemoteComputer -Class Win32_OperatingSystem |
Invoke-Command | Esegue un comando PowerShell sul computer remoto. | Invoke-Command -ComputerName RemoteComputer -ScriptBlock { Get-Process } |
Start-Process | Avvia un nuovo processo sul computer remoto. | Start-Process -ComputerName RemoteComputer -FilePath "C:\Windows\System32\notepad.exe" |
Stop-Process | Termina un processo in esecuzione sul computer remoto. | Stop-Process -ComputerName RemoteComputer -Id 12345 |
Get-Registry | Recupera valori dal registro di sistema del computer remoto. | Get-Registry -ComputerName RemoteComputer -Hive HKEY_LOCAL_MACHINE -Path "Software\Microsoft\Windows\CurrentVersion\Run" |
Set-Registry | Imposta valori nel registro di sistema del computer remoto. | Set-Registry -ComputerName RemoteComputer -Hive HKEY_LOCAL_MACHINE -Path "Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "MyApp" -ValueData "C:\Program Files\MyApp.exe" |
Get-CimInstance | Recupera istanze CIM dal computer remoto. | Get-CimInstance -ComputerName RemoteComputer -ClassName Win32_LogicalDisk |
New-Item | Crea un nuovo elemento sul computer remoto. | New-Item -ComputerName RemoteComputer -ItemType File -Path "C:\Remote\myfile.txt" |
Ulteriori informazioni sono disponibili in questa risorsa ufficiale di Microsoft. Logicamente suggeriamo prima di provare questi comandi in locale, magari in una macchina virtuale, così da assicurarsi che il risultato sia quello che desideriamo, in particolare se siamo alle prime armi con i comandi di powershell, che è a tutti gli effetti un potente strumento in mano ai suoi utilizzatori.