If i help You, send me BTC please 1CJGz4UGyL7hTjPeN8j7fu9LRmmWiWSRHi

Проверить установлено ли обновление Windows.

Постов 29 из 174

Управляя несколькими компьютерами часто бывает необходимо проверить установлено ли определенное обновление, например kb3019215. Можно сделать это через GUI, но это не очень удобно и не быстро. Сделать это с помощью powershell удобней и быстрее.
Есть несколько вариантов как попробовать это сделать. Но самый интересный для меня вот такой, используя длинный конвейер (разделил на несколько строк — выполнять нужно все в одну строку без пробелов) :

1
2
3
4
New-Object -ComObject Microsoft.Update.Session | 
 %{$_.createupdatesearcher()}|
 %{$_.queryhistory(0,$_.gettotalhistorycount())} |
 %{if($_.Title.ToString().Contains("3019215")){echo $_}}

Результат примерно такой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Operation           : 1
ResultCode          : 2
HResult             : 0
Date                : 15.01.2015 1:00:23
UpdateIdentity      : System.__ComObject
Title               : Обновление для системы безопасности Windows 7 для систем на базе 64-разрядных (x64) процессоров (
                      KB3019215)
Description         : В программном продукте Microsoft обнаружена проблема безопасности, которая может повлиять на вашу
                       систему. Чтобы защитить компьютер, установите данное обновление, выпущенное корпорацией Майкросо
                      фт. Полный список проблем, устраняемых этим обновлением, см. в соответствующей статье базы знаний
                       Майкрософт. После установки этого обновления может потребоваться перезагрузить компьютер.
UnmappedResultCode  : 0
ClientApplicationID : AutomaticUpdates
ServerSelection     : 3
ServiceID           : 7971f918-a847-4430-9279-4a52d1efe18d
UninstallationSteps : System.__ComObject
UninstallationNotes : Это обновление программного обеспечения можно удалить с помощью функции "Просмотр установленных о
                      бновлений" в разделе "Программы и компоненты" панели управления.
SupportUrl          : http://support.microsoft.com
Categories          : System.__ComObject

Объект, возвращаемый конвейером содержит много информации, среди которой интересен параметр HResult, значение которого = 0 в случае, если обновление установлено. Зная это, можно посчитать количество успешно установленных обновлений, примерно так:

1
2
3
4
5
New-Object -ComObject Microsoft.Update.Session |
 %{$_.createupdatesearcher()} |
 %$_.queryhistory(0,$_.gettotalhistorycount())} |
 %{if($_.HResult -eq 0){echo $_}} | measure-object |
 %{echo $_.count}

P.S.
Остальные варианты, используя командлет Get-Hotfix или wmic qfe мне не понравились.

1
Get-hotfix | findstr 3019215

Результат примерно такой:

1
USEFREE-001 Security Update  KB3019215 NT AUTHORITY\???????

Не густо, но понятно, что обновление установлено (или была попытка это сделать), т.к. вывод не пуст.
2. Используя wmic:

1
wmic qfe | findstr 3019215

Результат примерно такой:

1
http://support.microsoft.com/?kbid=3019215 USEFREE-001 Security Update KB3019215  NT AUTHORITY\??????? 15/2015

Интересная статья с исходником.

, , ,

Aeverlytats26/05/2015 at 20:23Reply

This was so helpful and easy! Do you have any arlcites on rehab?

Menu