PDA

Просмотр полной версии : Программно получить статус необходимости перезагрузки после обновления


Горбушка
08.07.2015, 13:11
Всем привет!

Имеем огромную группу серверов Windows Server 2003, 2008, 2012 (если версии не путаю). Как все знают, мелкомягкие постоянно патчат своё решето, ну или делают вид. что патчат... Беда в том, что в отличии от Linux, где даже ядро можно пересобрать без ребута, винда даже обои рабочего стола примитивные обновления без ребута ставить не умеет...

Т.к. день, в который эта зараза захочет обновиться, мне доподленно неизвестно, мне нужно программно (через cmd/wmi и топу подобные консольные утилиты) получить текущий статус системы...

Что интересует:
Требуется ли перезагрузка?
Есть ли неустановленные обновления?

Гугл меня уже послал...

lag
08.07.2015, 13:57
В справке упоминаются пару ключей реестра
https://support.microsoft.com/en-us/kb/832475/ru (https://href.li/?https://support.microsoft.com/en-us/kb/832475/ru)
https://technet.microsoft.com/ru-ru/library/cc164360(v=exchg.80).aspx (https://href.li/?https://technet.microsoft.com/ru-ru/library/cc164360%28v=exchg.80%29.aspx)

Горбушка
13.08.2015, 18:42
На самом деле, определить оказалось намного проще...

На всех серверах после прихода обновления, в процессах появляется TrustedInstaller.exe
Соответственно, опрашивая сервер на предмет наличия TrustedInstaller можно определить необходимость его перезагрузки.

Т.к. обновления приходят в определённый день, а технологическое окно идёт следом не сразу, а с задержкой минимум в пару дней, этого вполне достаточно. За это время гарантировано обновление установится, а неприбитый процесс будет говорить о том, что после обновления сервер ещё не перезапускался.