MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20090922101040_1287410429_20090922101035_1434787018_cmd_UAC.png

Lanciare comandi su PC remoti con PsExec

a cura di Zane
01/03/2011 - articolo
Tecniche Avanzate - PsExec è un comodo software gratuito che consente di eseguire comandi ed aprire programmi su sistemi della propria LAN senza bisogno di alzarsi dalla sedia, e non richiede nemmeno l'installazione di alcunché sui PC remoti. Praticissimo per i power user, si rivela un piccolo gioiello per gli amministratori di sistema.

Le soluzioni di controllo remoto come VNC, Windows Live Sync, Desktop Remoto, Synergy o Input Director sono indubbiamente molto utili per lavorare sul proprio PC abituale anche quando non si dispone di un accesso "fisico" allo stesso.

Gli amanti dell'automazione e dello scripting sanno però molto bene che si tratta di soluzioni interattive: in lìobbiettivo sia semplicemente quello di eseguire un singolo comando sul sistema remoto, tale approccio diviene rapidamente molto scomodo.

Si pensi, ad esempio, all'amministratore di sistema che desideri lanciare uno script di manutenzione oppure l'installazione di un aggiornamento sulle centinaia di calcolatori della propria LAN, oppure al power user che desideri predisporre un'icona sul proprio netbook tramite la quale alzare o abbassare il volume del PC fisso utilizzato come Hi-Fi durante una festa in giardino.

PsExec alla riscossa

In tutte le situazioni in cui si desideri lanciare un singolo comando su un sistema remoto, la soluzione si chiama PsExec: un programma gratuito da linea di comando che permette appunto di raggiungere l'obbiettivo con una certa semplicità, e senza la necessità di installare alcunchè sul calcolatore remoto.

Lo strumento, se vogliamo tralasciare alcuni dettagli tecnici, è una sorta di SSH altamente semplificato e dedicato al mondo Microsoft. È compatibile con quasi tutte le versioni, da Windows 2000 fino a Windows 7, passando per le declinazioni "server" e quelle a 64 bit.

Le uniche escluse sono le edizioni "Starter" e "Home": se il PC che desiderate controllare monta Windows XP Home Edition, Windows Vista Home Basic/Premium eccetera potete interrompere qui la lettura ed installare un server SSH. PsExec non è infatti compatibile con queste declinazioni.

Verifiche pre-volo

Ci sono un paio di condizioni che devono essere soddisfatte prima di poter utilizzare lo strumento:

Predisporre tutto il necessario

Una volta che tutti i pre-requisiti siano soddisfatti, è possibile scaricare il pacchetto "PsTools", di cui PsExec fa parte, e scompattare PsExec.exe in una directory a piacere.

Per semplificare notevolmente le fasi successive, raccomando di estrarre l'eseguibile nella cartella C:\Windows, ma non è un requisito.

A questo punto, aprite una finestra di comando (impartite cmd.exe da Start -> Esegui (fate riferimento a "Ripristinare il comando "Esegui" in Windows Vista e Windows 7" in caso non fosse visibile)) e lanciate quindi semplicemente psexec.

Dopo aver accettato la licenza d'uso (proposta solo al primo avvio), dovreste ottenere una videata simile a questa

MLIShot_1.jpg

Se così non fosse, vi raccomando nuovamente di copiare il file PsExec.exe nella directory C:\Windows e riprovare.

In caso tutto sia filato liscio, siamo pronti ad usare il programma per davvero.

Arrivati a questo punto, siamo pronti a lanciare il primo comando sul sistema remoto. Sarà qualcosa di simile a questo: psexec.exe \\NomeComputerRemoto -u NomeUtenteRemoto -p PasswordUtenteRemoto -i -d "C:\Percorso remoto\dell'eseguibile\da lanciare.exe"

In particolare:

A titolo di esempio, andrete a lanciare qualcosa del genere: psexec.exe \\starscream -u "Gianluigi Zanettini" -p 123456 -i -d "C:\Windows\system32\notepad.exe".

Se tutto sarà andato per il verso giusto, verrà aperto il blocco note sul sistema remoto

MLIShot_2.jpg

Qualche altro esempio semplice

Creare un collegamento per agire con un solo click

È evidente che digitare manualmente una stringa così lunga ogni volta che abbiamo bisogno di lanciare un comando remoto finisce per essere frustrante e ben poco pratico sul lungo periodo.

La soluzione è quella di creare un collegamento all'invocazione di PsExec

Shortcut.jpg

La procedura è quella già illustrata molte altre volte: click con il pulsante destro del mouse in un'area vuota, Nuovo -> Collegamento. Da qui, inserire l'intero comando di PsExec con tutti i parametri e gli argomenti alla prima pagina della breve procedura guidata, ed un nome a piacere per il collegamento nella seconda.

Va da sé che dovrete ripetere la creazione di un nuovo link per ogni comando remoto che vorrete poi lanciare con facilità.

Vi raccomando di eseguire sempre preventivamente varie prove con PsExec dal prompt di comando, di modo da assicurarvi che tutto funzioni, prima di creare i relativi collegamenti: risulterà così più facile diagnosticare e prevenire eventuali problemi.

Copiare un programma ed eseguirlo automaticamente

Ora ci siamo "scaldati" lanciando programmi che già erano memorizzati sul disco remoto, possiamo passare al gradino successivo: lanciare un programma che, al momento, è salvato solamente sul PC locale.

Per farlo, si procede in modo analogo a quanto visto fino a poco fa. Il comando però sarà ora simile a questo: psexec.exe \\NomeComputerRemoto -u NomeUtenteRemoto -p PasswordUtenteRemoto -i -d -c "-f C:\Percorso locale\dell'eseguibile\da lanciare.exe"

Rispetto a prima, osserviamo che:

A titolo di esempio, andrete quindi ad impartire qualcosa del genere: psexec.exe \\starscream -u "Gianluigi Zanettini" -p 123456 -i -d -c -f "D:\Software di test\mio-test.exe".

Se tutto sarà andato per il verso giusto, il programma verrà aperto come voluto

MLIShot_4.jpg

Notate soltanto che PsExec "parcheggia" i file eseguiti in questo modo nella cartella C:\Windows\system32 del PC remoto, dimenticandosi però di cancellarli ad esecuzione terminata.

Ricordatevi quindi di fare un po' di pulizia quando avete finito (magari proprio tramite qualcosa simile a psexec.exe \\starscream -u "Gianluigi Zanettini" -p 123456 -i -d cmd.exe /C del "C:\Windows\System32\zane-test.exe" /Q)

Installare un programma da remoto

Utilizzando il metodo appena proposto possiamo installare alcuni programmi sui sistemi remoti in modo davvero immediato.

La linea d'azione è molto semplice. Procuratevi innanzitutto il setup del vostro applicativo preferito (VLC media player, ad esempio), e consultate la documentazione per capire quale parametro passare all'eseguibile per avviare l'installazione automatica silenziosa: si tratta, generalmente, di -s oppure /s o /q.

Salvatelo sul disco locale e, con la stessa tecnica descritta in precedenza, eseguitelo sul PC remoto. Per installare VLC media player, in particolare, si userà un comando simile a questo: psexec.exe \\starscream -u "Gianluigi Zanettini" -p 123456 -i -d -c -f "E:\Downloads\vlc-1.1.0-win32.exe" /S.

Dopo pochi istanti di elaborazione, il software dovrebbe essere stato installato

MLIShot_5.jpg

La tecnica funziona al meglio con quelle procedure di installazione composte da un singolo file. Con un po' di inventiva è possibile installare anche soluzioni più corpose, come Microsoft Office: la procedura completa prevede di combinare PsExec con un installazione "unattended" accessibile via rete.

Ancora più libertà, con Nircmd

Agli utenti intraprendenti, segnalo la possibilità di combinare PsExec con l'interessante utility gratuita Nircmd per compiere alcune operazioni meno immediate.

È possibile, tanto per citare qualche esempio, zittire il sistema da remoto (psexec.exe \\virtual-xp -u "Gianluigi Zanettini" -p 123456 -i -d -c -f "D:\Zane\Desktop\nircmd\nircmdc.exe" mutesysvolume 1), aprire o chiudere il drive CD/DVD, "spegnere" il monitor (psexec.exe \\virtual-xp -u "Gianluigi Zanettini" -p 123456 -i -d -c -f "D:\Zane\Desktop\nircmd\nircmdc.exe" monitor off) oppure regolare il volume.

Per maggiori informazioni, vi rimando all'articolo "Nircmd amministra Windows dalla linea di comando": l'unica differenza, rispetto a quanto detto in quella sede, è che l'intera chiamata a Nircmd deve essere inserita come argomento di PsExec, come da esempi precedenti.

Accendre e spegnere il PC con un solo click

Sebbene PsExec possa essere usato anche per spegnere e, in determinati scenari, accedere un PC remoto, non è certamente la strada più semplice.

A chi fosse alla ricerca di una soluzione per queste due necessità segnalo piuttosto "Il comando Shutdown: istruzioni per l'uso" e "Accendere un PC via rete utilizzando "Wake-on-LAN" (oppure "Wake-on-Internet")".

Per maggiori informazioni...

PsExec non è un programma complicato, ma prevede comunque ancora numerose opzioni che non ho approfondito in questa sede.

Come visto in apertura, è possibile stampare la sintassi completa del comando semplicemente impartendo psexec.exe, senza parametri, da linea di comando.

In alternativa, la pagina web di riferimento propone le stesse informazioni ed ancora qualche esempio in un formato più accessibile.

Questa lista di FAQ infine, propone ancora qualche suggerimento per l'uso in scenari particolari.

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati