L'ho appena messo insieme, sembra funzionare piuttosto bene:
wuauclt /detectnow
wuauclt /updatenow
:CheckForRequiredRestart
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" > nul && shutdown -r -t 0
ping 127.0.0.1 -n 61 > nul
goto CheckForRequiredRestart
Basta lanciarlo in a .cmd
file e rilasciarlo nella cartella Esecuzione automatica ed eseguirlo una volta.
(Non sono molto chiaro su quale supporto del sistema operativo il /updatenow
parametro ma sembra avere un effetto su Windows 7.)
Ho provato l'applicazione di patch su una macchina virtuale Windows 7 e ha attraversato l'intera sequenza (qualcosa come 10 riavvii?). Le uniche patch rimaste erano il Malicious Removal Tool (che richiede l'approvazione dell'utente) e 4 aggiornamenti che sono deselezionati per impostazione predefinita. Sono piccoli però, dopo l'installazione c'è stato un riavvio e poi un paio di patch in cima ed è stato fatto.
Non installa aggiornamenti opzionali quindi ce n'erano alcuni, piccoli. Li ho installati manualmente e non c'erano nemmeno le patch in cima, quindi tutto sommato è stato piuttosto efficace per un semplice script. Quando termina, basta semplicemente cancellare lo script. Non conosco un modo semplice per rilevare una finitura completa o lo farei rimuovere / unschedule stesso.
Non mi piacciono davvero gli script di WuInstall o VBS / PowerShell che sono costretti a gestire una selezione categorica avanzata di aggiornamenti che è troppo complessa per questo semplice obiettivo. Non c'è semplicità come "Importante", "Consigliato" e "Opzionale"; devi escludere esplicitamente le lingue e / o includere molte categorie diverse e anche in questo caso non è esattamente la stessa cosa che ottieni con il tradizionale ciclo di installazione / riavvio.
Per applicare patch oltre al sistema dispari si dovrebbe ovviamente utilizzare un metodo diverso, come la distribuzione di un'immagine con WDS, utilizzando un'installazione slipstreamed, WSUS o WSUS Offline Update.