In order to keep my users from getting windows update messages, I try to install any client updates at night. I have a few tricks to make this possible:
1: Boot up at night
Most computers can boot up automatically at night, using Wake-On-LAN. If your computer or its NIC does not support WOL, you can use the bios' power management to boot at night.
Don't start all computers at the exact same time, as this will result in a power peak - better spread it, like 5 computers per minute.
 
2: Use deadlines
In WSUS, in the approve box, you can set a deadline. If you set it to any time before the expected nightly boot, the update will be installed immediately when picked up.
3: Force update detection
I described in another post how to force update detection. You can use this script in the startup scripts of the computer, but this will slow down bootup when the user wants to login in the morning. Therefore, I make a few changes to the batch file to force update detection only at night:
@echo off
 cls
 rem
 rem Fetch the time
 FOR /F "TOKENS=1 DELIMS=:" %%a in ('time /t') do set cdate=%%a
 rem
 rem The following lines will skip this script if it's not night.
 if (%cdate%)==(5) GOTO NOTNOW
 if (%cdate%)==(05) GOTO NOTNOW
 if (%cdate%)==(6) GOTO NOTNOW
 if (%cdate%)==(06) GOTO NOTNOW
 if (%cdate%)==(7) GOTO NOTNOW
 if (%cdate%)==(07) GOTO NOTNOW
 if (%cdate%)==(8) GOTO NOTNOW
 if (%cdate%)==(08) GOTO NOTNOW
 if (%cdate%)==(9) GOTO NOTNOW
 if (%cdate%)==(09) GOTO NOTNOW
 if (%cdate%)==(10) GOTO NOTNOW
 if (%cdate%)==(11) GOTO NOTNOW
 if (%cdate%)==(12) GOTO NOTNOW
 if (%cdate%)==(13) GOTO NOTNOW
 if (%cdate%)==(14) GOTO NOTNOW
 if (%cdate%)==(15) GOTO NOTNOW
 if (%cdate%)==(16) GOTO NOTNOW
 if (%cdate%)==(17) GOTO NOTNOW
 if (%cdate%)==(18) GOTO NOTNOW
 if (%cdate%)==(19) GOTO NOTNOW
 if (%cdate%)==(20) GOTO NOTNOW
 if (%cdate%)==(21) GOTO NOTNOW
 rem
 rem Don't run this script every day not to
 rem intervene with already scheduled update installations
 FOR /F "TOKENS=1" %%a in ('date /t') do set cdate=%%a
 if (%cdate%)==(mo) GOTO NOTNOW
 if (%cdate%)==(we) GOTO NOTNOW
 if (%cdate%)==(fr) GOTO NOTNOW
 net stop wuauserv
 REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f
 REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f
 REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f
 rem
 net start wuauserv
 wuauclt /detectnow
 rem
 :NOTNOW


