WMI Windows-Updates Dokumentation/ Kritische Windows-Updates über WMI abfragen

  • Moin, ich mal wieder! Diesmal mit einem Anliegen zur Auflistung aller wichtigen Updates mit AutoIt.
    Man kann ja mithilfe von WMI-Abfragen das ganze realisieren. => CreateupdateSearcher()
    Ich suche schon mehrere Tage, dennoch finde ich absolut keine richtige Dokumentation über die möglichen Parameter

    Folgendes Skript kann zumindest schon mal alle wichtigen und optionalen Updates auflisten. Was mir fehlt ist ein Parameter um nur die wichtigen Updates anzeigen zu können:

    Habe bereits mehrere Seiten mit einigen Befehlen gefunden, aber keine Befehle für dieses anliegen.

    Folgendes Skript von "spudw2k" aus dem englischen Forum ist auch sehr hilfreich beim arbeiten mit Windows-Updates unter AutoIt, aber auch da konnte ich keine Parameter für mein anliegen finden:

    https://www.autoitscript.com/forum/topic/78…c-updates-tool/

    Vielleicht hat ja jemand nen Tipp wie man an eine Doku dazu kommt? ?(

    Mit freundlichen Grüßen,
    Chris

  • Ich habe gerade mal bei mir nachgesehen - ich habe mal für ein Zabbix-Monitoring auch so etwas gebaut.

    Meine Abfrage nutzt


    AutoIt
    $searchResult = $updateSearcher.Search("IsInstalled=0 and IsHidden=0 and Type='Software'")

    Und hat eigentlich nur die wichtigen, nicht die optionalen Updates angezeigt.

    Google hat mir das ausgespuckt: https://msdn.microsoft.com/en-us/library/…6(v=vs.85).aspx
    Das ist der MS-Artikel mit den möglichen Parametern.

    Jetzt kommt ein ABER ...

    Ich rate inzwischen allen Kunden und jedem von der Nutzung dieser Funktion ab. Die regelmäßige Abfrage (1 bis 2 mal am Tag) hat uns nur Ärger gebracht.
    Erst läuft es eine Weile ... und dann erwischt man die Server wie diese Stundenlang bei 100% CPU braten weil sich der Prozess dazu ... ich schätze mal aufhängt.
    Insbesondere Windows Server 2008 R2 scheint da sehr anfällig zu sein.

    Und nein, ich habe auch keine bessere Methode dafür gefunden (bisher).

    Das Problem ist das diese Abfrage die Suche nach Updates aktiv anstößt. Er schaut nicht einfach was Windows sowieso schon weis (also die Anzeige im Windows Update Dialog).
    Mir würde die Daten von dort schon reichen (wo auch immer die ablegt sind)

    Gruß,
    BLinz

  • $searchResult = $updateSearcher.Search("IsInstalled=0 and IsHidden=0 and Type='Software'") Und hat eigentlich nur die wichtigen, nicht die optionalen Updates angezeigt.

    Außer den Befehl "IsHidden=0", der vermutlich nur die ausgeblendeten nicht mit anzeigt ist die Abfrage identisch mit meinem Beispiel oben.

    Habe testeshalber die Abfrage mit "IsHidden=0" abgeändert und mit Windows-Update auf nen Win7-PC verglichen. (Bei Win10 ist man ja mega eingeschränkt was Ansicht verfügbarer Updates angeht)

    [Blockierte Grafik: https://www2.pic-upload.de/img/33466195/testupdatewin7.png]
    (die Brother-Treiber wegdenken, die werden so schon von der Abfrage ignoriert)

    Ich rate inzwischen allen Kunden und jedem von der Nutzung dieser Funktion ab. Die regelmäßige Abfrage (1 bis 2 mal am Tag) hat uns nur Ärger gebracht.
    Erst läuft es eine Weile ... und dann erwischt man die Server wie diese Stundenlang bei 100% CPU braten weil sich der Prozess dazu ... ich schätze mal aufhängt.
    Insbesondere Windows Server 2008 R2 scheint da sehr anfällig zu sein.

    Oha, das klingt plausibel. Windows-Update (wuauserv) fordert ja auch so eine enorme Auslastung sobald es aktiv ist. Danke für den Denkanstoß! Bei mir sind es ca. 60 Workstations bei denen ich die Abfrage einsetzen will. Das wird aber Auslastungstechnisch wohl kein Unterschied zu nen Server bringen.

    Das Problem ist das diese Abfrage die Suche nach Updates aktiv anstößt. Er schaut nicht einfach was Windows sowieso schon weis (also die Anzeige im Windows Update Dialog).
    Mir würde die Daten von dort schon reichen (wo auch immer die ablegt sind)

    Bin der Meinung mal was gehört zu haben das die Infos über bereits bekannte Updates in der Registry liegen. Vllt müsste man da nochmal schauen.
    Ansonsten mal ausprobieren ob es die Systeme bei einer täglichen Abfrage spürbar ausbremst.

  • Aus dem verlinkten Microsoft-Artikel in Post #2:

    "BrowseOnly=1" finds updates that are considered optional.
    "BrowseOnly=0" finds updates that are not considered optional.

    Übersetzt:

    "BrowseOnly = 1" findet Updates, die als optional gelten.
    "BrowseOnly = 0" findet Updates, die nicht als optional gelten.

    Test doch mal mit

    AutoIt
    $searchResult = $updateSearcher.Search("IsInstalled=0 and Type='Software' and BrowseOnly=0")

    Dann gäbe es noch:
    "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update.

    Das wäre die Alternative um nur wichtige zu finden. Deine Frage im Post #1 war nach Parametern. Unter https://msdn.microsoft.com/en-us/library/…6(v=vs.85).aspx findest du die satt.

  • Oh sry, hab den Link grad überlesen! X/

    Der Parameter hat es echt gebracht, vielen Dank BLinz. ;)

    Edit: Jo, die Doku in dem Link ist genau was ich gesucht habe, Klasse!

  • Interessant ...
    Gibt es auch eine Möglichkeit über diese Art und Weise Updates auszublenden?

    Hier findest du ein entsprechendes VB Script: https://serverfault.com/questions/1458…e-hotfix/341318

    In dem Script wird das nicht gewünschte Update auf versteckt gesetzt:

    AutoIt
    update.IsHidden = True

    Die Zeile könnte man 1:1 einfach ob ins Skript einbauen => natürlich mit zusätzlicher Vorauswahl

    Also ja, würde gehen (behaupte ich mal ohne es getestet zu haben)

  • Ok sieht gut aus.
    Jedoch sehe ich ein kleines Problem.

    Oftmals ist es ja so, dass man 1 Update ausblendet und dann nach dem nächsten Suchen mit Windows-Update wieder 1 Update mit einem älteren Datum und einer anderen KB findet (z. B. Silverlight).
    Ist dies auch möglich gleich alle Updates (also auch die noch nicht in Windows-Update erscheinen) auszublenden?

  • Ist dies auch möglich gleiche alle Updates (also auch die noch nicht in Windows-Update erscheinen) auszublenden?

    Klar geht das, stellt man bei Windows Updates ein und nennt sich "Nie nach Updates suchen (nicht empfohlen)"
    Dem schließe ich mich aber an.

  • Ne ich will natürlich nicht alle Updates deaktivieren, sondern nur bestimmte wie z. B. Silverlight.

    Naja, du musst die KB schon vorher kennen. Oder du gehst nach Stichwörtern in der Beschreibung.
    Stichwörter klingt nicht so zuverlässig.