Имеем огромную группу серверов Windows Server 2003, 2008, 2012 (если версии не путаю). Как все знают, мелкомягкие постоянно патчат своё решето, ну или делают вид. что патчат... Беда в том, что в отличии от Linux, где даже ядро можно пересобрать без ребута, винда даже [S]обои рабочего стола[/S] примитивные обновления без ребута ставить не умеет...
Т.к. день, в который эта зараза захочет обновиться, мне доподленно неизвестно, мне нужно программно (через cmd/wmi и топу подобные консольные утилиты) получить текущий статус системы...
Что интересует:
Требуется ли перезагрузка?
Есть ли неустановленные обновления?
На самом деле, определить оказалось намного проще...
На всех серверах после прихода обновления, в процессах появляется TrustedInstaller.exe
Соответственно, опрашивая сервер на предмет наличия TrustedInstaller можно определить необходимость его перезагрузки.
Т.к. обновления приходят в определённый день, а технологическое окно идёт следом не сразу, а с задержкой минимум в пару дней, этого вполне достаточно. За это время гарантировано обновление установится, а неприбитый процесс будет говорить о том, что после обновления сервер ещё не перезапускался.