Abfrage WSUS-database für erforderliche Updates pro server

Ich suchte das Internet weit und weit auf der search nach einer Möglichkeit, die WSUS-database abzufragen, um die Anzahl der Updates anzuzeigen, die auf einem server installiert werden müssen. Ich habe eine partielle Antwort auf dem folgenden Blog gefunden, aber diese Antwort wird davon ausgehen, ob das Update noch ausstehend ist, dass es noch von einem server benötigt wird (WSUS nimmt das auch in ihrer Benutzeroberfläche an).

SQL Query for WSUS 3 Needed Updates

Ich hoffe, diese Lösung ist für andere nützlich.

SELECT left(tbComputerTarget.FullDomainName,30) as [Machine Name] ,count(tbComputerTarget.FullDomainName) as [# of Missing patches] ,tbComputerTarget.LastSyncTime as [Last Sync Time] FROM tbUpdateStatusPerComputer INNER JOIN tbComputerTarget ON tbUpdateStatusPerComputer.TargetID = tbComputerTarget.TargetID WHERE (NOT (tbUpdateStatusPerComputer.SummarizationState IN ('1′, '4′))) AND tbUpdateStatusPerComputer.LocalUpdateID IN (SELECT LocalUpdateID FROM dbo.tbUpdate WHERE UpdateID IN (SELECT UpdateID FROM PUBLIC_VIEWS.vUpdateApproval WHERE Action='Install')) GROUP BY tbComputerTarget.FullDomainName, tbComputerTarget.LastSyncTime ORDER BY COUNT(*) DESC 

Ich kann für den Update-Namen filtern

 SELECT C.FULLDOMAINNAME AS COMPUTADOR,VU.DEFAULTTITLE AS ATUALIZAÇÃO, 'STATUS' = CASE WHEN UP.SummarizationState = 1 THEN 'NÃO INSTALADO' WHEN UP.SummarizationState = 2 THEN 'NÃO INSTALADO' WHEN UP.SummarizationState = 3 THEN 'INSTALANDO' WHEN UP.SummarizationState = 4 THEN 'INSTALADO' WHEN UP.SummarizationState = 5 THEN 'FALHOU' END FROM TBCOMPUTERTARGET C INNER JOIN tbUpdateStatusPerComputer UP ON C.TargetID = UP.TargetID INNER JOIN tbUpdate U ON UP.LocalUpdateID = U.LocalUpdateID INNER JOIN [PUBLIC_VIEWS].[vUpdate] VU ON U.UpdateID = VU.UpdateId WHERE VU.DefaultTitle LIKE 'WINDOWS Internet Explorer 9 for Windows 7' OR VU.DefaultTitle LIKE'Update for Microsoft Office 2010%'