У нас около 1000+ серверов, мы ежемесячно вносим исправления. Мне нужно проверить, обновлены ли исправления на серверах или нет, можно ли проверить на основе номеров бюллетеней безопасности Microsoft (например, MS14-40.) с помощью PowerShell.
С уважением, Картик V
Я полагаю, что с 1000+ серверами у вас есть экземпляр WSUS в вашей среде? Вы можете получить много информации об этом с помощью PowerShell. Это фрагмент, который я использую на нашем сервере WSUS (или через удаленный ps):
$wsus = Get-WsusServer
$servers = @("server1","server17","pol-server3","pol-server4")
$servers | % {
$servername = $_
$server = $wsus.GetComputerTargets() | ? { $_.FullDomainName -imatch $servername }
If ($server) {
New-Object PSObject -Property @{
Server = $servername
Installed = $server.GetUpdateInstallationSummary().InstalledCount
NotInstalled = $server.GetUpdateInstallationSummary().NotInstalledCount
}
}
} | ft -auto
Полученные результаты:
Server Installed NotInstalled
------ --------- ------------
server1 144 21
server17 144 21
pol-server3 149 21
pol-server4 100 37
Таким образом, это проверяет, установлены ли исправления или все еще необходимы, но не дает который патчи по-прежнему нужны для каждого сервера. Надеюсь это поможет.
get-hotfix | WHERE {$_.hotfixID -eq 'KB******'}
Вы получите обновление с установленным временем и т. Д.
WMI раньше мог запрашивать их через класс QuickfixEngineering, но я чувствую, что это не так хорошо работает в Vista или более поздних версиях:
Get-WMIObject -Class "Win32_QuickFixEngineering" -Computer <computername>
Для этого я бы, вероятно, предложил использовать WSUS, если у вас есть централизованное управление исправлениями. Вы можете добавить столбец для номера MSRC в представление «Все обновления», и в отчете будет указано, в каких системах оно установлено. Поскольку это всего лишь база данных SQL, вы можете создать несколько вызовов через Powershell для извлечения этих данных, но в настоящее время это выходит за рамки меня.