В свете последних событий, связанных с WannaCry ransomware, очень актуальным становится проверка наличия того или иного установленного патча (Patch/Hotfix/KB) внутри ОС виртуальных машин.
Test-VMHotfix из моего PowerCLI Vi-Module модуля быстро и эффективно проверит все ваши ВМ. Пользоваться функцией проще простого, передайте в pipeline ВМ для проверки и шаблон названия патча в параметре -KB. Параметр KB позиционный, поэтому его можно не указывать.
Само собой, функция будет проверять только, а) включенные б) Windows машины, остальные будут просто проигнорированы. Самым интересным свойством возвращаемых функцией объектов является «Hotfix».
Свойство Hotfix может принимать 3 варианта значений:
Номер KB (Hotfix ID), соответствующий заданному вами шаблону, если таковой был найден.
Пустое поле (blank), если патч не найден, т.е. не установлен.
«Unknown», если функции не удалось опросить данную ВМ. Основных причин здесь две: Firewall (как локальный в ВМ, так и сетевой) и ОС внутри ВМ не отвечает.
Старайтесь не задавать слишком общие шаблоны KB типа «kb1*» и тем более не «*», иначе вы получите огромное количество объектов на каждую ВМ.
Для диагностики и решения проблемы с ВМ для которых вы получаете «Unknown», я написал ещё одну функцию Test-VMPing.
Используя параметр -Verbose вы дополнительно к результатам получите статистику по работе функции. Кстати, Test-VMHotfix тоже поддерживает этот параметр.
Ну и самое главное: используя параметр -Restart, вы сможете перезапустить не отвечающие ВМ. Что значит «перезапустить»? Если в ВМ установлены VMTools, то будет произведён рестарт ОС машины (Restart-VMGuest) - если VMTools не установлены или не загружены в данный момент, то будет произведён ВМ ресет (Restart-VM).
Я рекомендую вместе с параметром -Restart всегда использовать -Confirm:$true.
Дело в том, что значение по умолчанию этого параметра различное для Restart-VM и Restart-VMGuest и в зависимости от наличия или отсутствия VMTools будет или не будет запрос на перезапуск ВМ.
Уверены в том, что вы делаете, тогда смело отменяйте подтверждение –Confirm:$false.
Как и остальные функции модуля, Test-VMHotfix и Test-VMPing имеют алиасы с суффиксом «ViM». Для любителей old school есть и совсем короткие tvmp (Test-VMPing) и tvmkb (Test-VMHotfix).