web-dev-qa-db-ja.com

サーバー上のPowerShellチェックウィンドウの更新

1000台以上のサーバーがあり、毎月パッチを適用しています。サーバー上でパッチが更新されているかどうかを確認する必要があります。PowerShellによってMicrosoftSecurity Bulletin番号(MS14-40など)に基づいて確認することは可能ですか。

よろしく、カーシックV

1
karthick

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各サーバーにパッチがまだ必要です。お役に立てれば。

4
xXhRQ8sD2L7Z

WMIは以前はQuickfixEngineeringクラスを介してそれらをクエリできましたが、これはVista以降ではうまく機能しないと感じています。

Get-WMIObject -Class "Win32_QuickFixEngineering" -Computer <computername>

ただし、これについては、パッチ管理を一元化したと仮定して、おそらくWSUSを使用することをお勧めします。 MSRC番号の列を[すべての更新]ビューに追加すると、レポートにMSRC番号がインストールされているシステムが表示されます。これは単なるSQLデータベースであるため、Powershellを介していくつかの呼び出しを作成し、このデータを引き出すことができる場合がありますが、現時点ではそれは私を超えたタッチです。

1
Tim Alexander
get-hotfix | WHERE {$_.hotfixID -eq 'KB******'}

インストール時間などのアップデートを取得します。

1
Reaces