userohnenamen
leider kein name
|
Hi, ich hab in den letzten 2 Wochen "einige" Stunden dran gesessen und hab (eigentlich mal für mich) ein Tool geschrieben mit dem ich mehrere Server remote auf einmal updaten kann ohne mich einloggen zu müssen. Nachdem ich von ein paar Kollegen sehr gute Rückmeldungen erhalten hab, dachte ich mir, ich veröffentliche es und schau ob es noch andere ebenfalls gebrauchen können. Gedacht ist es für kleinere Umgebungen bei denen kein SCCM (oder dessen Alternativen) existieren, sei es aus Kostengründen oder auch weil der Overhead dadurch noch mehr steigt. Die Oberfläche ist imho möglichst einfach gehalten, bietet aber doch die notwendigsten (zumindest aktuell für mich) Möglichkeiten um eingreifen zu können und eine gewisse Flexibilität zu erhalten. Warum das ganze? Weil das ansonsten geniale Powershell Modul PSWindowsUpdate dafür keine befriedigende Lösung darstellt, da hier der Remote Prozess nur mehr per Windows Scheduler ausgelöst werden kann und somit keine Auswahlmöglichkeit für die zu installierenden Updates besteht. Von daher wollte ich etwas das mir interaktiv die Möglichkeit bietet einzuschreiten (typischer Fall: Exchange Server bei denen man mit dem .net Framework aufpassen muss). Um das ganze zu realisieren musste ich zu einem kleinen Trick greifen, mit einem Powershell Virtual Account, da ansonsten das installieren der Updates per Remote-Powershell nicht funktioniert. Glücklicherweise konnte ich das ganze so abbilden das ich mir remote alle Vorrausetzungen selbst schaffen kann. D.h. für die Nutzung ist kein aktives eingreifen auf den remote hosts notwendig. Nur die passenden Credentials (entweder vom ausführenden User oder im Programm hinterlegt). Das Serverfenster verfärbt sich je nach Pingstatus auf grün = echo ok, rot = kein echo, violett = kein dns record dafür. Die Uptime ist eingebaut um hier auch gleich feststellen zu können wann der Reboot durch ist und das System wieder reagiert. Ping wird alle paar Sekunden, die Uptime halbminütlich abgefragt und dementsprechend dann die Oberfläche angepasst. Das ganze ist auf github veröffentlicht: https://aimaat.github.io/RemoteUpdate/Download vom letzten Release: https://github.com/aimaat/RemoteUpd...emoteUpdate.exeVielleicht kann es hier ja auch der ein oder andere gebrauchen, würde mich freuen Feedback von euch zu erhalten. Sollte sich jemand den Code anschauen, bitte habt Mitleid mit eurer Kritik mir gegenüber Das letzte mal das ich damit was zu tun hatte ist 15 Jahre her und ich hab das jetzt in den letzten 2 Wochen mit viel Trial and Error, googlen und lernen zusammengeschustert. tia, uon
Bearbeitet von userohnenamen am 22.02.2020, 19:53
|
mr.nice.
differential image maker
|
Danke für's teilen, ich werde es mir kommende Woche anschauen! Könnte eventuell nützlich sein.
|
wergor
connoisseur de mimi
|
Schaut interessant aus! Vielleicht ist das Tool was für uns, ich muss mit meinen Kollegen drüber reden.
|
Smut
takeover & ether
|
Super. Noch immer unvorstellbar dass selbst Server 2019 das nicht vernünftig kann. Ziemliche workarounds die Microsoft selbst zur Verfügung stellt.
|
Viper780
Er ist tot, Jim!
|
Danke dir. Könnte ein Startpunkt auch bei uns sein. Für die wenigen Windows Server fehlt etwas die Expertise und die Tools. Evtl würde es auch bei den Clients was bringen
Unter was für einer Lizenz steht das Tool und darf es erweitert werden?
|
daisho
SHODAN
|
Schaut interessant aus, werde ich definitiv testen bei mir in der Arbeit
|
userohnenamen
leider kein name
|
danke einmal für die positiven rückmeldungen, das ist schon ein netter motivationsfaktor
ich habs hier nicht erwähnt/vergessen, je server geht ein powershell fenster auf, ich muss mal einen screenshot machen wie das dann mit z.b. 10 servern aussieht
GUI/no GUI geht in der version noch nicht, da bin ich gerade dran das eben noch in den hintergrund zu verschieben (halt nur dann wenn acceptall aktiviert ist).
bezüglich lizenz hab ich mir ehrlich gesagt noch keine gedanken gemacht bzw. muss ich mich auch einlesen was dann was genau bedeutet bzw. für implikationen hat grundsätzlich hab ich kein problem wenn ich pull requests bekommen würde die das ganze erweitern bzw. verbessern
und clients sollten grundsätzlich auch gehen, hab ich aber jetzt noch nicht getestet, rein programatisch würde aber nichts dagegen sprechen
|
ThMb
JO FRLY
|
Lässt du die Server über Inet updaten oder von zentraler Quelle (wsus)? Alternativ dazu gibts nämlich auch den Azure Update Service, der im Grunde das gleiche macht und auch kostenfrei ist.
Aber cooles Tool und gute Idee dahinter!
|
userohnenamen
leider kein name
|
danke, kannte ich noch nicht (bin noch etwas der cloud verweigerer bzw. zumindest nicht der große fan davon), werd ich mir sicher auch mal ansehen bezüglich wsus: wenn der wsus per GPO ausgerollt ist, wird dieser verwendet man kann aber mit dem parameter "-MicrosoftUpdate" ein updatesuchen online erzwingen (um z.b. treiber darüber zu holen bzw. zumindest zu sehen was er findet) Das ganze kann man in den settings bei "PS WU commands" hinzufügen, wie z.b. auch globale ausnahmen ala "-MicrosoftUpdate -NotTitle "OneDrive" -NotKBArticleID KB4489873" das füge ich dann beim command den ich ausführe hinzu, fast die ganze palette wie hier aufgezeigt ist möglich: http://woshub.com/pswindowsupdate-module/
Bearbeitet von userohnenamen am 22.02.2020, 14:08
|
userohnenamen
leider kein name
|
Ich hoffe man verzeiht mir den Doppelpost aber ich hab jetzt auf v.0.2.0.0 erhöht Die Auswahl zwischen GUI und no GUI funktioniert (auch in Wechselwirkung mit AcceptAll), d.h. ohne GUI wird die ausführende Powershell im Hintergrund gestartet ohne das man sie sieht. Bei den Vorrausetzungen musste ich auch noch nachbessern, da habe ich vergessen den PackageProvider NuGet ebenfalls zu installieren wenn nicht vorhanden, andernfalls schlägt dann PSWindowsUpdate fehl (sowas merkt man meist dann wenn man nochmals mit einem komplett jungräulichem system probiert) edit: hier noch ein bild wie es mit GUI in arbeit aussieht
Bearbeitet von userohnenamen am 22.02.2020, 20:17
|
Kampftrinker
Big d00d
|
So, habs leider erfolglos probiert. Ich nehme mal an, dass der Fehler irgendwo auf meiner Seite liegen wird, obwohl die Voraussetzungen erfüllt sein müssten. per enter-pssession
komme ich auf die gewünschten Maschinen, der Port ist per Telnet erreichbar und die Richtlinien dafür sollten (!) korrekt per GPO verteilt werden. Interessant ist, dass die Fehlermeldung sich je nach Server zunächst unterscheidet (mal WinRM, mal Zugangsdaten). Habe mal PSWindowsUpdate auf meinem RDS händisch installiert - seitdem deckt sich die Fehlermeldung mit dem DC. Anscheinend kann die Uptime aber beim 2019er DC (im Gegensatz zum 2016er) nicht ausgelesen werden, obwohl ich per Powershell rüberkomme und die Maschine im ServerManager korrekt angezeigt wird. Wie gehabt, gehe von einem Fehler meinerseits aus. So ganz schlau werde ich noch nicht draus, teste aber in den nächsten Tagen unverdrossen weiter.
|
userohnenamen
leider kein name
|
ok, danke für die rückmeldung, wenn auch nicht erfolgreich ich hab demnächst noch vor ein besseres error handling und auch ein log zu schreiben, das ist ja aktuell quasi nicht vorhanden um draufzukommen warum was probleme bereitet
|
userohnenamen
leider kein name
|
ich hab gestern abend ca. 60 server in ~ 10 ADs damit gepatcht im AD ging bei mir der großteil problemlos, einzig bei den 2012er servern bin ich teilweise noch selbst über eine fehlende powershell 5 gefallen bei zwei servern außerhalb eines ADs bekomm ich aktuell auch noch keine verbindung und kann noch nicht sagen warum, 2 weitere im selben konstrukt haben problemlos funktioniert ansonsten hab ich mit 0.2.0.1 jetzt schon mal logging eingebaut (inkl. verbose funktion für quasi jeden schritt), aber halt noch ned über alle schritte hinweg, das wird dann in den nächsten tagen folgen und dann sollte es beim debugging wenns ned funktioniert auch leichter werden
|
daisho
SHODAN
|
im AD ging bei mir der großteil problemlos, einzig bei den 2012er servern bin ich teilweise noch selbst über eine fehlende powershell 5 gefallen Das ist der Klassiker, Set-ExecutionPolicy ist auch so eine Stolperfalle bei eigenen nicht signierten Scripten.
|
erlgrey
formerly known as der~erl
|
cooles tool, danke. gerade ausprobiert auf paar 2019er servern, die 2 Dinge sind mir aufgefallen: VERBOSE: Installed [3] Updates
Reboot is required. Do it now? [Y / N] (default is 'N')
Object reference not set to an instance of an object.
+ CategoryInfo : NotSpecified: (:) [Get-WindowsUpdate], NullReferenceException
+ FullyQualifiedErrorId : System.NullReferenceException,PSWindowsUpdate.GetWindowsUpdate
+ PSComputerName : srv3
sobald die reboot required abfrage kommt instant "Object reference not set to an instance of an object." , trat bei mir auf egal ob [x] Reboot angehakt war, oder nicht. kb4537818 (cumulative update) hat mir das tool partout nicht vorgeschlagen, das zeigte mir das win update aber auch erst an als ich explizit updates gesucht habe, kann also auch Absicht sein.
|