Im ersten Teil des Projekts zum Optimieren der Treiberdatenbank des SCCM wurden die Vorbereitungen getroffen. Die neuen Treiber wurden heruntergeladen und in einer Ordnerstruktur organisiert.

In diesem zweiten Teil geht es um das Löschen der alten Treiber. Im Laufe der Zeit haben sich in der Datenbank über 7000 Treiber gesammelt. Viele davon sind doppelt, und lediglich mit unterschiedlichen Kategorien versehen. Unterschiedliche Treiberversionen sind ebenso vorhanden wie alte Treiber für Modelle, die gar nicht mehr im Unternehmen vorhanden sind.

Das Löschen der Treiber dauert einige Zeit, bei über 7000 Treibern hat es fast 6 Stunden gedauert. Die Treiber werden auch aus der SQL-Datenbank gelöscht. Diese ist danach stark fragmentiert. Ein defragmentieren der SQL-Datenbank ist also erforderlich, ansonsten sinkt die Performance des Servers enorm.

Im ersten Schritt habe ich nun alle Administrativen Kategorien und Treiber-Pakete manuell gelöscht. Anschließend ging es an das Löschen der einzelnen Treiber.

Zur Hilfe kommt dabei das Skript How to delete multiple packages applications Driver packages what else?

Das Skript importiert eine CSV-Datei und entfernt alle Pakete, die in dieser angegeben sind. Die Aufgabe besteht als darin, die Namen aller Treiber aus der SCCM Datenbank in diese CSV Datei zu bekommen.

Für mich war die einfachste Möglichkeit wie folgt:

  1. Öffne die Drivers-Kategorie in der SCCM-Console
  2. Zeige Alle Treiber an, nicht nur die ersten 1000
  3. Markiere Alle Treiber
  4. Kopiere mit STRG-C die Daten
  5. Füge die Daten in Notepad++ ein
Standard Kategorien

Die Standard-Kategorien in der SCCM-Konsole

Notepad++ bietet die Möglichkeit mithilfe von RegEx-Ausdrücken zu suchen und zu ersetzen. Im konkreten Fall wird die Liste Tabulator-getrennt eingefügt. Pro Kategorie, die in der SCCM Konsole eingeblendet ist, wird ein Tabulator eingefügt.

Entsprechend sieht mein Befehl zum Ersetzen aus:

Regex Befehl zum erhalt des Namens

Der erste RegEx Befehl generiert die erforderliche CSV-Struktur

Anschließend müssen noch doppelte Zeilen entfernt werden. Auch dies ist mittels Notepad++ und Regex möglich:

Entfernen doppelter Einträge

Der zweite RegEx-Befehl entfernt doppelte Einträge in der Liste

Nun hat man eine Liste im vom Skript verwendeten Format. Lediglich die erste Zeile muss noch mit folgendem Inhalt hinzugefügt werden:

Die Datei muss nun als .csv gespeichert werden, der Ordnung wegen habe ich Sie im selben Ordner wie das Skript abgelegt.

Im Skript selbst müssen nun drei Anpassungen gemacht werden:

Nun kann das Powershell Skript ausgeführt werden. Anschließend ist die SCCM-Treiberdatenbank vollständig geleert.

Im dritten Teil zeige ich, wie die neuen Treiber importiert werden können.

 

banner