1000台以上のサーバーがあり、毎月パッチを適用しています。サーバー上でパッチが更新されているかどうかを確認する必要があります。PowerShellによってMicrosoftSecurity Bulletin番号(MS14-40など)に基づいて確認することは可能ですか。
よろしく、カーシック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
したがって、これはパッチがインストールされているか、まだ必要かどうかをチェックしますが、アドバイスはしませんwhich各サーバーにパッチがまだ必要です。お役に立てれば。
WMIは以前はQuickfixEngineeringクラスを介してそれらをクエリできましたが、これはVista以降ではうまく機能しないと感じています。
Get-WMIObject -Class "Win32_QuickFixEngineering" -Computer <computername>
ただし、これについては、パッチ管理を一元化したと仮定して、おそらくWSUSを使用することをお勧めします。 MSRC番号の列を[すべての更新]ビューに追加すると、レポートにMSRC番号がインストールされているシステムが表示されます。これは単なるSQLデータベースであるため、Powershellを介していくつかの呼び出しを作成し、このデータを引き出すことができる場合がありますが、現時点ではそれは私を超えたタッチです。
get-hotfix | WHERE {$_.hotfixID -eq 'KB******'}
インストール時間などのアップデートを取得します。