Jump to content

Windows Update Reports zuverlässig forcieren


Weingeist
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

Windows Update Reports forcieren:

Jeder kennt glaub dieses leidige Thema. Windows interessieren die Befehle wuauclt.exe /reportnow /detectnow manchmal nicht die Bohne. Je neuer das OS, desto weniger zuverlässig kann man es anstossen. Windows Server 2022 konnte ich zum Beispiel partout nicht zuverlässig zu einer forcierten Report zwingen.

 

Zufällig bin ich über eine Lösung gestolpert die vermutlich wirklich IMMER funktioniert.

 

In Powershell: $updateSession = new-object -com "Microsoft.Update.Session"; $updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates

Danach: wuauclt.exe /reportnow

 

Das funktioniert selbst auf super aktuellen Server 2022 / Windows 10 Builds wo eine fehlende Internetverbindung z.Bsp. die Update-Suche teilweise ziemlich wirkungsvoll verhindert.

 

Herausgefunden hat das ein findiger Herr namens Robbie Vance: https://pleasework.robbievance.net/howto-force-really-wsus-clients-to-check-in-on-demand/

 

 

Ein kleines Script hat er auch gleich mitgeliefert (braucht erhöhte Rechte!)

 

Function Force-WSUSCheckin($Computer)
{
   Invoke-Command -computername $Computer -scriptblock { Start-Service wuauserv -Verbose }
   # Have to use psexec with the -s parameter as otherwise we receive an "Access denied" message loading the comobject
   $Cmd = '$updateSession = new-object -com "Microsoft.Update.Session";$updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates'
   & c:\bin\psexec.exe -s \\$Computer powershell.exe -command $Cmd
   Write-host "Waiting 10 seconds for SyncUpdates webservice to complete to add to the wuauserv queue so that it can be reported on"
   Start-sleep -seconds 10
   Invoke-Command -computername $Computer -scriptblock
   {
      # Now that the system is told it CAN report in, run every permutation of commands to actually trigger the report in operation
      wuauclt /detectnow
      (New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
      wuauclt /reportnow
      c:\windows\system32\UsoClient.exe startscan
   }
}

 

 

Vielleicht hilfts ja jemandem ich finds Klasse.  ;)

 

Link zu diesem Kommentar
vor 32 Minuten schrieb Weingeist:
 

Windows Update Reports forcieren:

Jeder kennt glaub dieses leidige Thema.

 

...aber nur von Beiträgen wie diesem, nicht aus dem richtigen Leben. Und immer fehlt die Erklärung, warum es wichtig sein soll, dass die Reports zu einem bestimmten Zeitpunkt reinkommen.

WSUS ist nicht Patch Management, sondern nur Patch Delivery. Und Patch Delivery funktioniert durchaus zuverlässig.

 

In der Sache:

1. in dem Skript wird die Variable $criteria nicht gesetzt, sie ist aber wichtig! Da sollte stehen "IsInstalled=0 and Type='Software'"

2. warum sollte ein Skript, das ausschließlich REMOTE-Befehle enthält, LOKAL mit erhöhten Rechten ausgeführt werden? Es werden Adminrechte auf dem entfernten System benötigt, aber lokal kann es ganz normal gestartet werden.

bearbeitet von cj_berlin
Link zu diesem Kommentar
vor 24 Minuten schrieb cj_berlin:

...aber nur von Beiträgen wie diesem, nicht aus dem richtigen Leben. Und immer fehlt die Erklärung, warum es wichtig sein soll, dass die Reports zu einem bestimmten Zeitpunkt reinkommen.

WSUS ist nicht Patch Management, sondern nur Patch Delivery. Und Patch Delivery funktioniert durchaus zuverlässig.

Common. :rolleyes: Das Netz ist voll von solchen Beiträgen. Insofern ging das nicht nur mir so. Und auch hier gibts einige davon wenn ich mich richtig erinnere.

Im richtigen Leben ist WSUS nunmal Bestandteil des Patchmanagements in Kleinumgebungen. Zumindest da wo nicht einfach Blind MS vertraut wird das es schon funktionieren wird. Und das kann es auch ausreichend gut finde ich. Alles weitere wäre Overkill.

 

Beim Code: Sorry, den habe ich tatsächlich einfach Copy Paste von der Seite gemacht. Habe selber nur die obige Zeile verwendet. Aber auch die funktioniert mit dem $criteria ob nun notwendig oder nicht.

bearbeitet von Weingeist
Link zu diesem Kommentar
vor 2 Minuten schrieb Weingeist:

Im richtigen Leben ist WSUS nunmal Bestandteil des Patchmanagements in Kleinumgebungen. Zumindest da wo nicht einfach Blind MS vertraut wird das es schon funktionieren wird.

Und genau da liegt das Mißverständnis: WSUS hat nie versprochen, etwas zu sein, was besser oder mehr ist als Microsoft Update, nur halt lokal. Vor 20 Jahren war Bandbreite ins Internet, selbst in großen Umgebungen, noch wichtig. Dass jemand diese Reporting-Funktion da eingebaut hat, ist zwar nett, hilft aber - wie Beiträge wie der obige zeigen - nur bedingt, weil das einwandfreie Funktionieren dieser Funktion nicht Teil des Service-Versprechens ist

 

Und die Kleinumgebungen haben so viele Baustellen mehr, an die sie sich nicht trauen (

  • SMB1,
  • NTLM,
  • PKIs, die nach Weiter-Weiter-Finish ohne Sinn und Verstand eingerichtet wurden,
  • Exchange per NAT ins Internet veröffentlicht,
  • Adminkonten mit Mail-Postfächern,
  • NT4- und SAMBA2-Maschienensteuerungen im gleichen Netz wie AD,
  • SQL mit leerem SA-Kennwort und Service-Account in Builtin\Administrators,
  • Azure AD Connect für alle User, Gruppen und Computer,
  • Branchenanwendungen aus dem schwäbischen Hinterland, die nur bei ausgeschaltetem UAC funktionieren und pauschale Ausnahmen aus dem Virenscan für 1000 Ordner brauchen,
  • und, und, und...

) Da muss ich meist wirklich schmunzeln, wenn die Menschen dann versuchen, jedes einzelne Update extra freizugeben und dann auch noch Reporting darüber erwarten, ob es denn auch sofort installiert wurde ;-) 

Link zu diesem Kommentar

Auch wenn Du es vielleicht nicht nicht für Möglich hälst, es gibt noch andere Gründe Updates nicht einfach pauschal freizugeben.

- Produktionsmaschinen die nachher nicht mehr laufen

- Waagen die nicht mehr kommunizieren

- Labor-Geräte die ihre Ergebnisse nicht mehr eintragen

- Updates die von Leitsystemen im dümmsten Moment gezogen wurden

- Automatisierungen die nach Sicherheitsupdates problemlos funktionieren, nicht jedoch nach Funktionsupdates (stell Dir vor, in effizienten Kleinbetrieben gibts das ;) )

- usw.

 

Das sind Real-Life und keine Pseudo-Anforderung die Du mir hier indirekt unterstellst und haben manche Betriebe schon viele 1000 Euro gekostet.

Die Hersteller drehen die Updates meistens komplett ab. Nur selten zuverlässig bei W10/2022 wodurch es dann zu obigem Verhalten kommt sobald z.Bsp. eine Fernwartung aufgemacht wird.

 

Früher konnte ich einzelne Updates zurückhalten welche die Fehlfunktion verursacht haben und alle anderen Updates direkt installieren. Danach in Ruhe eine Lösung für das jeweilige Update suchen. Mir war das generelle +- zeitnahe Update von soviel wie möglich wichtiger als das vollständige Paket. Klar im Büro ist das hundwurscht, in der Produktion aber nicht.

 

Deshalb brauche ich eine zuverlässige Verzögerung der Installation auf genau das Wartungsfenster was ich brauche. Seit MS die automatische Installation durchgeboxt hat und "Downloaden/Warten bis Installation" nicht mehr geht ist das wichtiger den je geworden. :rolleyes:

 

 

WSUS: Wo genau liegt das Problem wenn man Ihn mit einfachen Mitteln fürs Management hernehmen kann auch wenn er dafür nicht gemacht ist? Manchmal verstehe ich echt nicht wieso man alles schlecht reden muss wenn etwas funktioniert. Insbesondere nicht wenn die Komplexität verhältnissmässig tief ist wie bei WSUS, die Übersicht bis ~50 Maschinen top ist, Bordmittel sind, keine Fremdsoftware/Zusatzsoftware auf dem Client braucht die gepflegt werden muss und sogar noch umsonst. Ich persönlich wüsste nicht wie das einfacher und kostengünstiger geht, lasse mich aber gerne aufklären.

 

 

Und stell Dir vor, die Themen die Du ansprichst werden auch von manchen KMU's angegangen. Man glaubt es kaum. Auch wenn nicht so viele sein dürften. Dafür aber auch Grossbetriebe, Spitäler, öffentliche Hand, Kraftwerke etc. wo das nicht der Fall ist. Diese wirklich problematischen Dinge gibt es in grösseren Produktionsbetrieben und bei grossen Herstellern übrigens genau so viel. Wenn nicht noch schlimmer, da Automatisierungsgrad grösser ist und die Systeme teilweise sehr alt. Habe vor 4 Monaten den letzten W95 Roboter ausser Betrieb genommen. Diverse XP Steuerung im Einsatz, teilweise sind die Maschinen gerade mal 8 Jahre alt. Das ist Real Life. Ob man es wahrhaben will oder nicht. Nicht jeder Betrieb kann nach 6 Jahren alle Maschinen entsorgen und die Produktion über den Haufen werfen. Müsste man aber, weil die Maschinenhersteller fast immer uralte OS einsetzen.

 

Grad letztens mit einem SEHR grossen Hersteller in Kontakt gewesen, dessen ganzes Ersatzteilmanagement seiner Anlagen über Access läuft. Die haben die uralte Anwendung weiterentwickelt weil ein anderer sehr grosser ERP-Anbieter immer nur Ärger gemacht hat und die Wartung viel zu komplex/Kosteninstensiv/nicht zeitnah war. Klar hätte man vermutlich besser lösen können mit einer Neuprogrammierung, aber da ging schon soviel Geld (Millionen) in das ERP, dass die einfach keine Lust mehr darauf hatten. Jetzt läuft nur noch die Lagerverwaltung/Rechnungsstellung der Ersatzteile etc. über das ERP. Auch sonst gibt es einiges an Branchenlösungen welche auch von grösseren Betrieben eingesetzt werden und nicht wirklich Up to date sind.

Link zu diesem Kommentar
vor 3 Minuten schrieb Weingeist:

Früher konnte ich einzelne Updates zurückhalten welche die Fehlfunktion verursacht haben und alle anderen Updates direkt installieren. Danach in Ruhe eine Lösung für das jeweilige Update suchen. Mir war das generelle +- zeitnahe Update von soviel wie möglich wichtiger als das vollständige Paket. Klar im Büro ist das hundwurscht, in der Produktion aber nicht.

 

Deshalb brauche ich eine zuverlässige Verzögerung der Installation auf genau das Wartungsfenster was ich brauche. Seit MS die automatische Installation durchgeboxt hat und "Downloaden/Warten bis Installation" nicht mehr geht ist das wichtiger den je geworden. :rolleyes:

...aber das ist es ja gerade NICHT, worauf Du dich im OP beziehst. Einzelne Updates freigeben, zurückhalten, zu einem definierten Zeitpunkt installieren - alles reale Anforderungen des Patch Delivery, die mit WSUS, GPOs und ein paar Skripten zuverlässig bedient werden können, das machen wir alle in Umgebungen groß und klein seit Jahrzehnten. Niemand rät davon ab, WSUS für Patch Delivery zu benutzen, denn es gibt ja nur sehr wenige Alternativen, zumindest was die zugrundeliegende Technologie angeht.

 

Du hingegen wolltest in Deinem OP Reports haben, und zwar

  • zu einem von Dir gewünschten Zeitpunkt, und
  • mittels eines Features, das dafür zwar leider irgendwann gebaut worden, aber noch nie wirklich gedacht gewesen ist.

Wenn

  • es Dich interessiert, ob bestimmte Updates auf einem bestimmten System installiert sind, und
  • es Dir möglich ist, auf diesem System remote mit Adminrechten ein Skript auszuführen,

dann kannst Du doch mit genau diesen Mitteln gezielt abfragen, ob die gesuchten Updates dort installiert sind oder nicht. Weniger Aufwand, sofortiges Ergebnis. Und der Report kommt irgendwann, so wie es schon immer bei WSUS der Fall war.

 

Hier ein ganz grobes Beispiel:

$session = New-Object -ComObject 'Microsoft.Update.Session'
$history = $session.QueryHistory("",0,5000) 
if ($history | Select-Object -ExpandProperty Title | Select-String "KB5016616") {
    "August CU installed"
} else {
    "August CU not installed"
}

lässt sich auch ohne irgendwelche erhöhten Rechte mit normalen Adminrechten aufrufen.

Link zu diesem Kommentar

Wuauclt /resetauthorization /detectnow gefolgt von wuauclt /reportnow funktioniert auf W10 bis 21H2 ganz wunderbar. Da wir zu 99% Server 2016 haben, kann ich für W2019 oder höher nicht sprechen. Beide Befehle sollten in einer administrativen Commandline ausgeführt werden, WSUS.MSC aktualisieren nicht vergessen. ;) Ist der Client/Server partout nicht zu überreden, hilft häufig das %windir%\softwaredistribution zu löschen.

 

Und WU/MU vollständig auf Clients/Servern abzudrehen sollte auch keine große Aufgabe sein. 3 x einen Fake-WSUS eintragen sollte IMHO ausreichen.

Link zu diesem Kommentar

Hat nicht Microsoft den Schalter /detectnow für wuauclt in Windows 10 abgedreht und den Update Check und Download auf den UsoClient umgeswitcht? Der Report geht wohl noch mit /reportnow, auch /resetauthorization geht wohl noch ......

 

https://docs.microsoft.com/de-de/archive/blogs/yongrhee/wuauclt-detectnow-in-windows-10-and-windows-server-2016

 

Grüsse

 

Gulp

 

 

bearbeitet von Gulp
Typo
Link zu diesem Kommentar
vor 13 Minuten schrieb Gulp:

Hat nicht Microsoft den Schalter /detectnow für wuauclt in Windows 10 abgedreht und den Update Check und Download auf den UsoClient umgeswitcht? Der Report geht wohl noch mit /reportnow, auch /resetauthorization geht wohl noch ......

Jepp, stimmt beides. Man kann natürlich auch ein UsoClient.exe StartInteractiveScan anschließend noch feuern.

Link zu diesem Kommentar

Moin,

zumindest ist es so, wenn noch keine Updates auf der Maschine ausstehen. Sowohl durch "Nach Updates suchen" unter "Windows Update" wie auch mittels "usoclient startinteractive" wir nach Updates gesucht, diese heruntergeladen und auch gleich installiert. Wenn bereits ausstehende Updates unter "Windows Update" angezeigt werden, dann wird nur geprüft und eventuelle weitere Updates heruntergeladen ohne Installation! (Ist zumindest bei Windows Server ab 2016 so, bei Windows Clients kann ich das aber nicht sicher sagen.)

Und nur "usoclient startscan" würde ich nicht zuverlässig nennen, da des öfteren gar nichts passiert, wenn nicht vorher wuauserv neu gestartet wurde. Und das reporten funktioniert in der Regel mit "wuauclt /reportnow" (zumindest wenn es mehrfach hintereinander ausgeführt wird; 10 x "wuauclt /reportnow" reichen da definitiv aus ;-))

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...