Я пишу скрипт в Powershell для получения информации об обновлениях с каждого компьютера и сопоставления информации с другой Системой, которая идентифицирует обновления по CVE ID. Я обнаружил, что для обновления в WSUS существует свойство «CVEID», которое задокументировано в MSDN, но я не знаю, как получить к нему доступ. Получение идентификатора CVE из WSUS является ключом к этому сценарию, поэтому я надеюсь, что кто-то там может помочь!
Вот свойство, к которому у меня возникли трудности:
IUpdate2 :: CveIDs Property -
http://msdn.microsoft.com/en-us/library/aa386102(VS.85).aspx
В соответствии с этим для интерфейса IUpdate2 необходим метод IUnknown :: QueryInterface -
«http://msdn.microsoft.com/en-us/library/ee917057(PROT.10).aspx"
"Экземпляр IUpdate можно получить, вызвав метод IUpdateCollection :: Item (opnum 8) (раздел 3.22.4.1).
Клиент может использовать метод IUnknown :: QueryInterface, чтобы затем получить интерфейс IUpdate2, IUpdate3, IUpdate4 или IUpdate5. Дополнительно, если обновление является драйвером, клиент может использовать метод IUnknown :: QueryInterface для получения интерфейса IWindowsDriverUpdate, IWindowsDriverUpdate2, IWindowsDriverUpdate3, IWindowsDriverUpdate4 или IWindowsDriverUpdate5. «
Вот скелет моего кода:
[System.Reflection.Assembly] :: LoadWithPartialName («Microsoft.UpdateServices.Administration») | Из-Null
if (! $ Wsus)
{
Возвращает объект, который реализует IUpdateServer
$ wsus = [Microsoft.UpdateServices.Administration.AdminProxy] :: GetUpdateServer ($ server, $ false, $ port)
}
$ computerScope = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope
$ updateScope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$ updateScope.UpdateSources = [Microsoft.UpdateServices.Administration.UpdateSources] :: MicrosoftUpdate
$ wsusMachines = $ wsus.GetComputerTargets ($ computerScope)
foreach machine в QSUS, напишите полное доменное имя
$ wsusMachines | ForEach-Object {
Запись-хост $ .FullDomainName
$ updates = $ .GetUpdateInstallationInfoPerUpdate ($ updateScope)
foreach update для каждой машины, напишите название обновления, состояние установки и бюллетень безопасности
$ обновления | ForEach-Object {
$ update = $ wsus.GetUpdate ($ .UpdateId) # Возвращает объект, который реализует Microsoft.UpdateServices.Administration.IUpdate
$ updateTitle = $ update.Title | Написать-Host
$ updateInstallationState = $ .UpdateInstallationState | Написать-Host
$ updateSecurityBulletin = $ update.SecurityBulletins | Написать-Host
$ updateCveIds = $ update.CveIDs # ОШИБКА: Свойство 'CveIDs' принадлежит IUpdate2, а не IUpdate
}
}