У меня WSUS установлен на коробке Server 2012R2. Я пытаюсь использовать Get-WsusComputer Команда powershell, чтобы получить список компьютеров с ожидающими или неудачными обновлениями. Документация для команды, кажется, предполагает, что -ComputerUpdateStatus
правильный вариант для этого.
-ComputerUpdateStatus Задает состояние обновления компьютера, представленное в пользовательском интерфейсе консоли WSUS. Допустимые значения для этого параметра: ...
Проблема, с которой я столкнулся, заключается в том, что использование этой опции, похоже, не имеет никакого значения. Когда я смотрю на консоль в графическом интерфейсе, около 75% моих систем находятся в состоянии ОК, некоторые из них какое-то время были отключены, некоторые имеют сбои, а остальные показывают пару 1-2 обновлений в нужном столбце.
PS D:\> get-wsuscomputer -ComputerTargetGroups Workstations | Measure-Object
Count : 264
PS D:\> get-wsuscomputer -ComputerTargetGroups Workstations `
>> -ComputerUpdateStatus Failed | Measure-Object
Count : 264
PS D:\> get-wsuscomputer -ComputerTargetGroups Workstations `
>> -ComputerUpdateStatus FailedOrNeeded | Measure-Object
Count : 264
Эта опция просто сломана? Или мне не хватает чего-то очевидного о том, как его использовать?
Ошибка в модуле WSUS PowerShell. Я декомпилировал модуль, и команда GetWSUSComputer выглядит так, как будто кто-то установил для переменной все статусы по умолчанию, если она равна нулю, даже если для переменной не было значения, определенного до следующей строки. Конструкция модуля не раскрывает состояние обновления компьютера в объекте, предоставляемом Get-WSUSComputer, поэтому вы также не можете фильтровать его постфактум.
Вот статья, описывающая все, что вас интересует.
Я попробовал часть кода из этой статьи, он работает очень хорошо. Обратите внимание на опечатку по адресу:
$wsus.GetUpdateStatue($updatescope,$False)
так должно быть:
$wsus.GetUpdateStatus($updatescope,$False)