- PsExec: eseguire comandi su una macchina remota -
 
TUTORIAL
Un servizio simile a SSH per Windows senza dover installare un server

La schermata di logon di Windows 7 con il prompt dei comandi avviato tramite PsExec

La schermata di logon di Windows 7 con il prompt dei comandi avviato tramite PsExec


Domanda
Come è possibile eseguire un programma su un PC nella mia rete locale?

Risposta
Per eseguire un programma su un computer nella propria rete locale ci sono due vie: avviare una sessione di Desktop Remoto o usare PsExec: il primo avvia una vera e propria sessione di lavoro grafica, con tanto di barra delle applicazioni, desktop e tutto il resto, la seconda invece si limita ad eseguire un comando (tipicamente il prompt dei comandi).
Per avviare una sessione di desktop remoto è sufficiente andare al menu Start, Tutti i programmi, Accessori, Connessione a desktop remoto, inserire il nome (o l'indirizzo IP) del computer nella rete locale a cui si intende connettersi e premere su Connetti.
PsExec invece non è un tool incluso in Windows, ma bisogna scaricarlo dalla suite di strumenti Sysinternals. Al contrario di molti tool di amministrazione da remoto come SSH, Telnet o altre soluzioni commerciali, PsExec ha il vantaggio di non richiedere l'installazione di alcunché sulla macchina a cui ci si sta connettendo, una volta scaricato l'eseguibile sarà possibile connettersi al PC in questione, a patto che i servizi necessari (servizio Server e Workstation) siano avviati e che si disponga delle credenziali necessari, ma tipicamente se si riesce ad accedere ad una condivisione di file su quella macchina non si dovrebbero avere problemi. Se ci si sta chiedendo come sia possibile tutto ciò ecco una breve spiegazione: PsExec non fa altro che creare un servizio tramite sc.exe con una riga di comando simile alla seguente:

sc \\nomemacchina create notepad binpath=c:\windows\system32\notepad.exe

Solo specificando come eseguibile PSEXESVC.EXE, che viene preventivamente copiato nella cartella C:\Windows\ tramite la condivisione \\nomemacchina\admin$.

Domanda
Come si usa PsExec? Quali opzioni accetta?

Risposta
Vediamo alcuni esempi di funzionamento di PsExec. L'esempio più semplice è quello di eseguire un prompt dei comandi interattivo sulla macchina remota tramite il proprio utente:

psexec \\nomemacchina cmd

Dato il comando si potrà interagire con il prompt come se si fosse sulla macchina in questione. Se invece non si dispone dei diritti necessari ma si conosce il nome utente e password di un utente su quella macchina:

psexec \\nomemacchina -u nomeUtente -p password cmd

Questo comando verrà eseguito sotto le credenziali specificate, se si omettesse la password essa verrebbe richiesta tramite il prompt.
Se invece si vuole avere accesso tramite l'account SYSTEM (account che ha accesso a qualsiasi risorsa) è sufficiente usare il parametro -s:

psexec \\nomemacchina -s cmd

Se invece si vuole eseguire un programma non presente sulla macchina remota basta servirsi del parametro -c:

psexec \\nomemacchina -c mioProgramma.exe

In questo modo esso verrà copiato nella cartella di Windows ed eseguito.
È anche possibile eseguire un programma in una sessione di Windows in esecuzione, ad esempio se un utente è connesso con la sessione 1, dando il seguente comando apparirà il Blocco Note sul suo desktop:

psexec \\nomemacchina -i 1 notepad.exe

Per elencare le sessioni attive sulla macchina remota (e relativi numeri identificativi) usare il comando qwinsta:

psexec \\nomemacchina qwinsta

Tutti questi comandi possono essere usati anche per eseguire un programma con credenziali, cartella di lavoro (parametro -w), privilegi di amministratore e altro anche solo sulla macchina locale, semplicemente omettendo la macchina di destinazione. Ad esempio è possibile eseguire un programma nella schermata di login di Windows tramite il parametro -x:

psexec -s -x notepad

Si ricordi infine che i parametri di psexec vanno specificati prima del comando da eseguire, e che i parametri relativi al comando da eseguire vanno specificati alla fine:

psexec -s -x notepad C:\ciao.txt

Per avere ulteriori informazioni sui parametri disponibili eseguire psexec senza parametri.

<< INDIETRO