Seite 1 von 2

Treiber: Ex- & Import für MDT

Verfasst: 22.07.2023, 18:01
von g-force
Ich sichere für verschiedene Hersteller/Modelle die Treiber per Script, um sie anschließend in WDS/MDT zur Verfügung zu stellen.

Code: Alles auswählen

$ComputerSystem = Get-CimInstance -Class Win32_ComputerSystem

$manufacturer = $ComputerSystem.Manufacturer

    if ($ComputerSystem.Manufacturer -eq 'LENOVO') {
        $Model = (Get-CimInstance -ClassName Win32_ComputerSystemProduct).Version
    }
    else {
        $Model = (Get-CimInstance -ClassName Win32_ComputerSystem).Model
    }

New-Item "S:\UPLOAD\DRIVER\$manufacturer\$model" -itemtype Directory -force
DISM /online /export-driver /destination:"S:\UPLOAD\DRIVER\$manufacturer\$model"
Das funktioniert auch wunderbar, die Ordner und Unterordner werden zuverlässig erstellt. Nachteil dieser Lösung ist aber, daß jeder PC/Laptop die Treiber sichert - auch, wenn diese bereits für dieses Modell gesichert wurden und der Ordner bereits vorhanden ist. Dies behindert den Workflow der Mitarbeiter, da der Treiber-Export immer stattfindet und somit Zeit kostet.

Wie kann ich das Script dahingehend ändern, daß der Treiber-Export nur gestartet wird, wenn der Ordner "Hersteller\Modell" nicht vorhanden ist - bei bereits vorhandenem Ordner "Hersteller\Modell" wird der Export übersprungen?

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 22.07.2023, 19:45
von Holgi
das geht wohl mit Test-Path.
Anders als der Name suggeriert, geht das sowohl für Pfad, als auch für Datei.
https://www.itechguides.com/powershell- ... le-exists/

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 22.07.2023, 22:28
von g-force
Ich versuche es mal so:

Code: Alles auswählen

$ComputerSystem = Get-CimInstance -Class Win32_ComputerSystem

$manufacturer = $ComputerSystem.Manufacturer

    if ($ComputerSystem.Manufacturer -eq 'LENOVO') {
        $Model = (Get-CimInstance -ClassName Win32_ComputerSystemProduct).Version
    }
    else {
        $Model = (Get-CimInstance -ClassName Win32_ComputerSystem).Model
    }

Test-Path -Path "S:\UPLOAD\DRIVER\$manufacturer\$model"

    if (-not (Test-Path -Path "S:\UPLOAD\DRIVER\$manufacturer\$model" ))
    {
New-Item "S:\UPLOAD\DRIVER\$manufacturer\$model" -itemtype Directory -force
DISM /online /export-driver /destination:"S:\UPLOAD\DRIVER\$manufacturer\$model"
    }

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 23.07.2023, 12:47
von Holgi
klappt es so?

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 23.07.2023, 14:04
von g-force
Mit einer Test-VM (über AnyDesk auf dem Firmen-Server) klappt es. Es sollte also auch ab morgen in der Produktion klappen. Wenn dann z.B. eine Serie mit 20 baugleichen Modellen zur Installation ansteht, dann wird nur beim ersten Gerät der Treiber-Export durchgeführt, bei den restlichen 19 Geräten wird der Export übersprungen.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 23.07.2023, 14:42
von Holgi
freut mich, dass ich helfen konnte!

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 23.07.2023, 19:05
von g-force
Mein lieber @Holgi, Du bist mir immer eine große Hilfe! Vielen Dank dafür!
So langsam mache ich mich mit PowerShell vertraut, auch hier hast Du großen Anteil.

:dankeschoen:

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 11:39
von g-force
Mein Script läuft schon einige Zeit sehr zuverlässig, nun stelle ich aber ein Nachteil fest.
Mit "DISM /online /export-driver /destination: *Pfad* " werden Ordner und Unterordner für Hersteller\Modell\Treiber erzeugt, alles okay. An jeden Unterordner (für z.B. den Grafiktreiber) wird aber hinter dem Treibernamen auch der Hash an den Namen gehängt. Beispiel: "iigd_dch_30.0.101.1338_E73D3E73894CCE6CDFAAA4E37E4E7B7653261A9C26CFE1EE505E65B3D9022B7F"
Dieser Hash ist auch bei eigentlich gleichen Treibern unterschiedlich. Alle Treiber wurden automatisch durch "Windows Update" installiert und anschließend mit DISM exportiert

Beim Import der Treiber in MDT (wir reden hier von über 100 verschiedenen PC-Modellen) wird nun nach und nach der eigentlich gleiche Treiber mehrfach importiert, da es ja unterschiedliche Hashes gibt. So gibt es allein vom "iigd_dch_30.0.101.1338" fast 10 Versionen, was den Treiberordner im MDT unnötig aufbläht (mittlerweile über 50 GB).

Mein Ziel ist es, daß gleiche Treiber nur 1x vorkommen und die Doubletten nicht mehr auftauchen.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 11:58
von Holgi
@Ben und @DK2000 haben mir bei so einer Sache mal ungemein geholfen:
viewtopic.php?p=361358&hilit=update+nam ... en#p361358

vlt. kann man das in ähnlicher Weise auch hier anwenden?
Wäre ja schön, wenn schon beim Export der Hash "abgeschnitten" wird. Leider habe ich von EnableDelayExpansion und so überhaupt keine Ahnung.
Aber @Ben, @DK2000 oder Andere können da sicherlich helfen.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 12:22
von g-force
Ich habe inzwischen einiges gelesen und vermute nun das Problem nicht mehr im Namen des Export-Verzeichnisses, sondern im Hash des Treibers. Nach meinen neuen Informationen vergleicht MDT beim Import den Hash des Treibers (unabhängig vom Ordnernamen) und identifiziert den Treiber dementsprechend als "Neu" oder als "Duplikat". Warum gleiche Treiberversionen trotzdem unterschiedliche Hashes haben, wissen wohl nur die Hersteller.

Ich müßte wohl MDT so modifizieren, daß Duplikate nicht über den Hash identifiziert werden, sondern über die Version.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 12:28
von Holgi
g-force hat geschrieben: 20.09.2023, 12:22 Ich müßte wohl MDT so modifizieren, daß Duplikate nicht über den Hash identifiziert werden, sondern über die Version.
Das wäre wohl auch eine Lösung.
Wenn denn aber nicht möglich:
wäre der Teil des Namens mit dem Hash abgeschnitten, gäbe es ja auch nur einen Ordner mit dem entsprechenden Treiber (in diesem Fall iigd_dch_30.0.101.1338). Also auch keine Duplikate.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 12:48
von g-force
Wenn beim Export Duplikate entstehen, ist das eigentlich egal. Da wird sowieso für jedes Modell ein eigener Ordner angelegt, der alle Treiber enthält. Dieser Export-Ordner (150 - 180 GB) liegt außerhalb von MDT und erstmal garnichts mit MDT zu tun.

Beim Import in MDT (sortiert nach "Hersteller/Modell") überprüft MDT anhand des Hash, ob dieser Treiber schon vorhanden ist. Falls NEU, wird importiert - falls DUPLIKAT, wird quasi ein Hardlink angelegt. In MDT gibt es einen Ordner "Out-of-box Drivers", der alle Treiber (in "Classes" sortiert) enthält - auf diesen Ordner wird dann mit einer Art "Hardlink" bei der Installation jedes Modells verwiesen. Ich darf aber nicht die Ordnernamen in "Out-of-box Drivers" verändern, da die Verlinkung sonst nicht mehr funktioniert.

Der Grund für die Duplikate liegt also im Hash, da MDT beim Import für verschiedene Hashes auch verschiedene Ordner anlegt.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 13:33
von Holgi
hast du da ggf. "Import drivers - Even if they are duplicates" angeklickt?
https://learn.microsoft.com/en-us/mem/c ... se-the-mdt
https://4sysops.com/archives/add-and-re ... owershell/

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 20.09.2023, 13:41
von g-force
Nein, das wird niemals angeklickt. Wenn ein Treiber denselben Hash hat, wird er auch nicht erneut importiert.

Re: Treibersicherung - Hilfe bei PS-Script

Verfasst: 24.09.2023, 12:51
von Thomas62
du sagst 20 Rechner als bsp.

Sind die alle Baugleich ?

Warum nicht einmal Windows installieren komplett ?

Vom Windows Image erstellen und auf den anderen 19 Rechner einspielen.