Ich arbeite an einem PowerShell-Skript, um einige Windows Update-Aufgaben auszuführen. Bei den meisten Aufgaben handelt es sich um das Abrufen einer Sammlung von Windows-Updates, die noch nicht angewendet wurden. Verwenden Sie dazu das folgende Code-Snippet. Sobald diese Sammlung zurückgegeben wird, durchlaufe ich sie und führe solche Aufgaben wie das Ausblenden, Herunterladen oder Installieren der Aktualisierungen durch.
Ich stelle fest, dass dieser Code zwischen 6 und 115 Sekunden dauern kann. In der Regel sind die längeren Läufe länger als 15 Minuten, nachdem die Maschine neu gestartet wurde oder inaktiv war.
Aber wenn ich das Windows Update-Steuerfeldelement öffne, weiß sofort , wie viele Updates ausstehen, und kann mir eine Liste (Sammlung) dieser ausstehenden Updates geben. Wenn ich WUs "Check for updates" -Link anklicke, dauert es noch 10 Sekunden, um es erneut zu prüfen, und manchmal liefert diese Überprüfung andere Ergebnisse, als sie sofort "wusste", als ich sie öffnete.
Ich nehme also an, dass WUA irgendwo im Cache eine Sammlung von Updates unterhält, die wahrscheinlich einmal täglich automatisch aktualisiert werden. Meine Frage: Wie kann mein Code auf diesen Cache zugreifen, anstatt den längeren Code "Nach Updates suchen" auszuführen? Insbesondere hoffe ich, schnell eine IUpdateCollection zu erhalten > um damit zu arbeiten.
%Vor%Beachten Sie, dass dies alles auf einem aktuellen Windows2012R2-System geschieht.
Der Cache ist eine CAB-Datei namens wsusscn2.cab, die regelmäßig von MSFT heruntergeladen wird. Es gibt einen direkten Link dazu in dem MSDN-Link, den ich unten gepostet habe. Vielleicht schreibe ein Skript, das das einmal pro Tag / Woche herunterlädt (vielleicht zu einer Netzwerkfreigabe, wenn dies ein weit verbreitetes Skript sein wird), und ändere dann dein Skript, um es immer auf die CAB-Datei anstatt online zu schauen. So:
%Vor%Tags und Links windows powershell winapi updates windows-update