mercoledì 21 aprile 2021 di 5014 Letture
Come eseguire comandi da remoto con un account Windows

Come eseguire comandi da remoto con un account Windows

Breve guida all'uso di PsExec, una potente e versatile utilità che permette di amministrare da riga di comando qualunque PC Windows senza trovarsi fisicamente di fronte alla macchina.

Tutti conoscono le principali soluzioni per il controllo a distanza di sistemi Windows, Linux, macOS e dispositivi mobili: esse consentono di gestire da remoto qualunque PC, come se ci si trovasse fisicamente seduti dinanzi alla macchina. Ove disponibile, si può visualizzare l'interfaccia utente della macchina remota e interagire con tutti gli elementi: finestre, menu, icone e così via.

Gli amministratori di sistemi Windows hanno da tempo a disposizione uno strumento ufficiale Microsoft chiamato PsExec e che fa parte del più ampio pacchetto di utilità PsTools sviluppato da Mark Russinovich.

PsExec è un programma di piccole dimensioni (pesa appena 1 MB su disco) che consente di eseguire comandi da remoto su qualunque sistema Windows, non soltanto Windows 10, Windows 7 e Windows 8 ma anche i sistemi Windows Server 2008 (e successivi) e le versioni di Windows oggi non più supportate da Microsoft.

Con PsExec è possibile eseguire qualunque comando su un altro PC Windows servendosi del prompt (cmd). Da una finestra PowerShell bisogna necessariamente digitare cmd e premere Invio prima di utilizzare PsExec.

Requisiti per utilizzare PsExec e controllare i PC a distanza

Per utilizzare PsExec senza alcuna difficoltà è necessario che i sistemi Windows siano collegati in rete locale e che su entrambi l'interfaccia di rete in uso sia posta su Rete privata: Differenza tra rete pubblica e rete privata in Windows 10.

In altre parole su tutti e due i sistemi devono essere selezionate le opzioni Attiva individuazione rete e Condivisione di file e stampanti: per default entrambe le impostazioni sono abilitate proprio scegliendo Rete privata nelle proprietà della rete.

L'utente che si serve di PsExec per eseguire comandi sull'altro PC deve inoltro conoscere le credenziali di un account amministrativo presente sulla macchina da controllare.

Quando si stabilisce una connessione con un computer remoto usando PsExec, l'utilità accede automaticamente alla cartella amministrativa admin$ presente sul PC di destinazione e vi copia un file chiamato psexesvc.exe (temporaneamente memorizzato nella cartella di sistema \windows\system32).

La cartella amministrativa admin$ punta infatti proprio alla directory in cui è installato Windows (%systemroot%).

Dal proprio PC suggeriamo di premere Windows+R quindi digitare \\NOME-PC\ADMIN$ sostituendo a NOME-PC il nome del computer da amministrare a distanza. Si dovrà vedere il contenuto della cartella in cui Windows è installato; diversamente PsExec non funzionerà (vedere l'articolo Condividere cartelle in Windows: a cosa servono le condivisioni amministrative per risolvere eventuali problemi).

Gli utilizzi più avanzati e potenti di PsExec includono l'avvio di sessioni interattive su sistemi remoti e la possibilità di usare strumenti a riga di comando come ipconfig che normalmente non hanno alcuna capacità di mostrare il loro output su sistemi remoti.

Come utilizzare PsExec per eseguire comandi da remoto su un altro PC Windows

Per eseguire PsExec basta scaricare il pacchetto completo di PsTools quindi estarne il contenuto in una cartella di propria scelta (ad esempio c:\pstools).

Digitando il comando seguente ci si potrà collegare al computer NOME-PC collegato in rete locale e, in questo caso, pulire la cache del resolver DNS locale:

psexec \\NOME-PC -u username -p password ipconfig /flushdns

Non specificando username e password dell'account presente su NOME-PC, PsExec utilizzerà le credenziali dello stesso account Windows attualmente in uso sulla macchina dalla quale il programma è stato avviato. Ovviamente lo stesso utente, con la medesima password, dovrà necessariamente esiste sul sistema NOME-PC di destinazione e disporre delle credenziali amministrative.

Come eseguire comandi da remoto con un account Windows

Come si vede nell'immagine, invocando psexec64, si può eseguire la versione a 64 bit della stessa utilità.

Con il comando seguente si chiederà a PsExec di riavviare il sistema remoto trascorsi 15 secondi:

psexec \\NOME-PC "cmd.exe" "/c shutdown /f /r /t 15"

Digitando il comando che segue si potrà passare alla modalità interattiva ovvero aprire un'istanza del prompt dei comandi sul sistema di destinazione e interagirvi come se ci si trovasse dinanzi al computer

psexec \\NOME-PC cmd

Come eseguire comandi da remoto con un account Windows

Come si può verificare impartendo i comandi hostname (che restituisce il nome del PC in uso) e whoami (che restituisce il nome del PC e l'account), tutti i comandi che si utilizzeranno da qui in avanti avranno effetto sul sistema remoto (NOME-PC).

Si possono eventualmente eseguire anche comandi PowerShell usando la sintassi powershell -ExecutionPolicy RemoteSigned -command "COMANDO" (sostituire al posto di COMANDO le istruzioni da avviare).

Per uscire dalla sessione interattiva iniziata con il comando cmd, basta scrivere exit e premere Invio.

PsExec permette di eseguire gli stessi comandi su più PC usando la sintassi seguente:
psexec \\PC1,\\PC2,\\PC3 ipconfig /all
I nomi dei PC da raggiungere possono anche essere inseriti in una lista salvata come file di testo (usare il comando psexec @c:\Users\Michele\lista.txt).

Infine una nota importante: PsExec è in sé un software assolutamente benigno e legittimo. Il file psexesvc.exe viene automaticamente rimosso dal sistema controllato a distanza non appena si chiude la sessione di lavoro interattiva o si riceve l'output del comando indicato. Alcuni motori di scansione antimalware possono comunque segnalare l'utilizzo di PsExec.

Suggeriamo anche la lettura dell'articolo Accedere al desktop di un altro utente senza conoscere la password.


Come eseguire comandi da remoto con un account Windows - IlSoftware.it