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.
|