- Put on some comfortable shoes, grab a drink and start running around
- Delegate this to someone you don't like
- Write a script to do it for you
BAT file using PSExec:
c:\pstools\psexec.exe \\pc1,pc2,pc3 "%windir%\system32\wuauclt.exe" "/detectnow"
Save the .BAT file and run it using an account which has local admin rights on each of the computers. The problem with this approach is that the exit code is only returned for the last computer in the list. One way around this is to parse the list of computers and run psexec against each one separately. Then you can capture the exit code to see if it was successful or not.
I could use FOR %% in a BAT script and use the ERRORLEVEL variable to check on the result of each request. But I'm lazy and resort to what I know best: VBScript or KiXtart.
Const computers = "pc1,pc2,pc3"
Const pstools = "c:\sysinternals\psexec.exe"
Const rmtCmd = "%windir%\system32\wuauclt.exe"
Const rmtArg = "/detectnow"
Set objShell = CreateObject("Wscript.Shell")
count_good = 0
count_all = 0
For each computer in Split(computers, ",")
count_all = count_all + 1
cmd = pstools & " \\" & computer & " " & rmtCmd & " " & rmtArg
wscript.echo "connecting to " & computer
Set oExec = objShell.Exec(cmd)
Do While oExec.Status = 0
If oExec.ExitCode = 0 Then
Wscript.Echo vbTab & "process was initiated"
count_good = count_good + 1
Wscript.Echo vbTab & "process failed"
Set objShell = Nothing
Wscript.Echo count_all & " attempted"
Wscript.Echo count_good & " completed"
You could do this in KiXtart, or Powershell or pretty much any scripting language.
Caveat: Because everything in life comes with a caveat (or three), you need to be aware that any remote scripting requires that you make sure things are in order before it'll work. Firewalls, port exceptions, user privileges, etc. Enjoy!