Ecco come fare:
Anzitutto è necessario scaricare dal sito di Microsoft il tool PSEXEC presente all’interno dei PsTools.
PsExec consente di lanciare un comando su un PC connesso alla rete senza che l’utente connesso alla console se ne renda conto. Una funzionalità veramente eccezionale di cui non possiamo che ringraziare il grande Mark Russinovich.
Dopo aver scaricato i PsTools vi consiglio di copiare il file psexec.exe nella cartella %windir%\system32.
Una volta che avremo a disposizione questo tool bisognerà capire quali PC sono collegati al nostro server; per questo useremo il comando net session.
Questo comando restituisce l’indirizzo IP di ogni PC connesso al nostro server. Il risultato del comando si presenta così:
C:\Users\Administrator>net session Computer Nome utente Tipo client In pausa da ------------------------------------------------------------------ \\192.168.143.35 utente1 1 00.08.45 \\192.168.143.41 utente23 4 00.01.22 \\192.168.143.42 utente12 3 00.01.54 \\192.168.143.43 utente16 6 01.46.35 \\192.168.143.44 utente43 3 00.00.01 \\192.168.143.46 utente3 63 00.00.03
Questo ci servirà a comprendere bene il comando che utilizzeremo in Powershell.
Esso infatti acquisisce tutti gli IP dal comando net session e li riutilizza per lanciare un comando dal prompt dei comandi in remoto.
Ecco il piccolo script da lanciare in powershell:
net session | ?{$_ -match '^\\\\\S*' }|% {$_.split(' ')[0]}| ForEach-Object -Process {psexec $_ cmd /c COMANDO}
Di seguito alcuni esempi pratici:
Aggiornare le group policies su tutti i PC:
net session | ?{$_ -match '^\\\\\S*' }|% {$_.split(' ')[0]}| ForEach-Object -Process {psexec $_ cmd /c echo n ^|gpupdate /force}
Inviare un messaggio alla console di tutti i PC connessi:
net session | ?{$_ -match '^\\\\\S*' }|% {$_.split(' ')[0]}| ForEach-Object -Process {psexec $_ cmd /c msg * Riavviare i PC}
Creare una determinata cartella in ogni PC connesso:
net session | ?{$_ -match '^\\\\\S*' }|% {$_.split(' ')[0]}| ForEach-Object -Process {psexec $_ cmd /c mkdir c:\PIPPO}
1 commento su “Lanciare un comando da remoto su ogni PC acceso in un dominio”