Übersicht
Abgeleitet von u/InternetStranger4You mit einigen erheblichen Änderungen.
Aufbau
Der Code ist auf zwei Module aufgeteilt:
Microsoft.Windows.PSGeneral
- Wrapper-Code für DISM und ReAgentC
- Erweiterte Tests für einen anstehenden Neustart
- Automatische Größenanpassung/Neuerstellung der Windows-RE-Partition
Microsoft.Windows.PSMitSec
- Integration von
Microsoft.Windows.PSGeneral
- Wiederholen von
Add-DismPackage, falls erforderlich
- Erweitern der Windows-RE-Partition, falls erforderlich
Natürlich dienen die Module nur zu Demonstrationszwecken. Wenn du sie ordnungsgemäß verwenden möchtest, solltest du Manifestdateien erstellen und Abhängigkeiten entsprechend referenzieren.
Protokollierung
PSFramework wird anstelle der integrierten Cmdlets verwendet.
Hinweise
Add-DismPackage scheint immer einmal fehlzuschlagen. Die Fehlermeldung selbst besagt, dass es sich um einen vorübergehenden Fehler handeln könnte (z. B. eine Race-Condition bei der Aktualisierung des Service Stack). Ein erneuter Versuch nach einigen Sekunden gelingt immer.
- Es wurde vermutet, dass dies an In-Place-Feature-Upgrades liegen könnte. Mir ist das bei einer frischen Installation von Windows 10 21H2 aufgefallen.
- Wie unter Aufbau erwähnt, passt dieses Skript die Größe der Windows-Wiederherstellungspartition (WinRE) automatisch an (falls angegeben). Mit Größenanpassung meine ich löschen und neu erstellen.
- Erfordert eine GPT-Festplatte. Nicht, dass du MBR nicht verwenden könntest, aber ich hatte keine Lust, mich damit auseinanderzusetzen. Die meisten Festplatten sollten inzwischen GPT sein.
- Erfordert eine vorhandene WinRE-Partition. Dies dient dazu, die vorhandene Datei Winre.wim wiederzuverwenden. Die .wim-Datei ist lokal sonst nirgendwo vorhanden. (Natürlich würde das Skript selbst eine benötigen; andernfalls gibt es nichts zu patchen.)
Test-PSMitSec_CVE202241099 implementieren
Offene Aufgaben
Wichtig
- Prüfen, ob der Patch vor der Aktualisierung angewendet wurde.
- Ein erneutes Anwenden führt nicht zu einem Fehler.
- Das Anwenden des Patches kann einige Minuten dauern. Microsoft Intune scheint Skripte mehr als einmal auszuführen, daher würde dies Zeit sparen.
- Wenn
Add-DismPackage beim ersten Mal fehlschlägt, wird eine Menge Fortschrittsbalken-Text ausgegeben (sieht sehr unschön aus). Dies sollte unterdrückt werden.
- Parameter für
Resize-WinREPartition hinzufügen, um Winre.wim aus einer alternativen Quelle zu akzeptieren (z. B. USB-Stick mit Installationsmedien).
Nicht so wichtig
- Variablen-/Funktionsnamen verbessern
- Unnötige Variableninitialisierungen entfernen (ich neige dazu, PowerShell wie C# zu schreiben)
- Einige Ausgaben von Verbose zu Host verschieben