Im System Center Configuration Manager 2012 (SCCM) müssen Treiber in die Treiberdatenbank importiert werden, damit diese zur Installation während dem Aufsetzen eines PCs genutzt werden können. In SCCM  2007 konnte die Treiber aus einem bestimmten Package genutzt werden. Sie mussten jedoch dafür nicht in die Datenbank importiert werden.

Im konkreten Fall hat sich diese Treiberdatenbank sehr aufgebläht, auch weil das System historisch gewachsen und wenig gepflegt wurde. Über 7200 Treiber hatten sich in der Datenbank gesammelt. Dabei waren:

  • Gleiche Treiber in unterschiedliche Kategorien importiert und somit doppelt vorhanden
  • Verschiedene Treiberversionen, neue und alte, desselben Treibers importiert.
  • Treiber von nicht mehr im Unternehmen vorhandenen Modellen enthalten.

Ziel war es nun, diese Treiberdatenbank zu säubern und auf ein wartbares Maß zu reduzieren. Folgender Angriffsplan wurde dafür augestellt:

  1. Downloaden und Organisieren der neuesten Treiber
  2. Löschen der alten Treiber und Treiberpakete aus der SCCM Datenbank
  3. Importieren der neuen Treiber in die SCCM Datenbank und das Erstellen von Treiber-Paketen

Dabei habe ich drei verschiedene Powershell Skripte genutzt, hier die Links zu den ursprünglichen Artikeln.

  1. Downloading Dell Driver CAB files automagically with the Driver Pack Catalog
  2. How to delete multiple packages applications Driver packages what else?
  3. Automate importing and creating driver packages in SCCM 2012 R2

Diese sind teilweise sehr alt und ich musste die Skripte anpassen und modifizieren um sie korrekt zum laufen zu bringen. Weiterhin ist zu sagen, dass ausschließlich Modelle der Firma Dell bespielt werden sollen. Falls Modelle anderer Hersteller genutzt werden, sind zumindest der Lösch- und Import Schritt gleich. Das Herunterladen und organisieren in einer Ordnerstruktur muss jedoch gegebenenfalls manuell durchgeführt werden.

Hier nun der erste Teil zum aufräumen der Treiber-Datenbank.

Download der Treiber

Zur Vorbereitung müssen die neuesten Treiber der derzeit in Benutzung befindlichen Modelle heruntergeladen und in Ordnerstrukturen organisiert werden. Ich habe dafür drei Ordner erstellt:

  • _Dell-Download: Enthält die Powershell Skripte zum Download und Import
  • DriverSources: Hierher werden die Treiberdateien heruntergeladen und organisiert
  • DriverPackages: Der Zielordner, indem die in SCCM importierten Driver Packages liegen

Dafür wurde das Skript Download-DellDriverPacks.ps1 verwendet. Generell läuft der Vorgang für jedes Modell und Betriebssystem folgendermaßen ab:

  • Das Skript verbindet sich mit der DELL Download Seite und lädt den neuesten Dell Driver Pack Catalog
  • Nach dem Download wird die Datei in den entsprechenden Download-Ordner entpackt.
  • Die enthaltene XML Datei wird dann nach dem vorher angegebenen Modell und Betriebssystem durchsucht und beginnt den Download.

Dabei musste ich das Skript anpassen. Das optionale Entpacken der heruntergeladenen .cab Dateien schlug ebenso fehl wie der gleichzeitige Download mehrerer Dateien. Ebenso konnten keine Treiber für Windows 10 gefunden werden. Entsprechend habe ich die optionalen Switche entfernt sowie Windows 10 als Betriebssystem-Option hinzugefügt:

Um nun für jedes Modell und Betriebssystem Treiber herunterzuladen, habe ich ein weiteres Powershell Skript geschrieben. Dieses ruft das erste Skript, für jedes Modell und Betriebssystem für das Treiber zur Verfügung stehen sollen, auf.

So kann genau ausgewählt werden, für welches Betriebssystem und welches Modell Treiber heruntergeladen werden. Nach Abschluss jedes Downloads sind die heruntergeladenen .Cab Dateien sind nun nach Modell geordnet im angegebene Verzeichnis zu finden. Dort müssen sie lediglich entpackt werden.

Um die Treiberdatenbank nicht erneut unnötig zu vergrößern, sollte der x86-Ordner aus jedem Verzeichnis gelöscht werden, wenn nur x64-Betriebssysteme installiert werden.

Nach dem Download und Entpacken sollte die Ordnerstruktur dann folgendermaßen aussehen:

Die Ordnerstruktur nach dem Download

In Teil 2 kümmere ich mich um das löschen und aufräumen der Treiberdatenbank im SCCM.