Compartir a través de


Microsoft Deployment Toolkit: Deployment Share automatisiert erstellen mit PowerShell

Mit dem Microsoft Deyployment Toolkit - kurz MDT - lassen sich Deployment Shares erstellen, die zum automatisierten Deployment von Betriebssystemen eingesetzt werden können. In diesem Artikel zeige ich an Hand von Windows 10 Enterprise und MDT 2013 Update 2, wie sich ein Deployment Share mit PowerShell automatisiert anlegen und konfigurieren lässt.

Das Szenario enthält folgende Schritte:

  1. Arbeitsverzeichnis inkl. Ressourcen für den MDT Deployment Share erstellen
  2. Erstellen des PowerShell-Skriptes
  3. Ausführen des PowerShell-Skriptes in der PowerShell ISE zur automatisierten Durchführung der folgenden Schritte:
    a) Anlegen eines MDT Deployment Shares
    b) Anlegen eines Anwendungsverzeichnisses inkl. einer Beispielanwendung
    c) Integration eines Betriebssystem-Images
    d) Integration eines kumulativen Update-Pakets
    e) Erstellung einer Task Sequenz
    f) Aktualisierung des erstellten Deployment Shares
  4. Überprüfen der Ergebnisse in der Deployment Workbench

Dieses Beispiel vermittelt Ihnen die Zusammenhänge der Bestandteile eines Deployment Shares und deren automatisierte Erstellung. Mit PowerShell lässt sich im Vergleich zur manuellen Einrichtung über den Assistenten in der Deployment Workbench erheblich Zeit einsparen. Selbstverständlich lassen sich mit PowerShell noch viele weitere Komponenten im MDT automatisieren.

Genug der einleitenden Worte, beginnen wir mit der Erstellung eines Arbeitsverzeichnisses im Windows Explorer.

1. Arbeitsverzeichnis erstellen

Zunächst erstellen wir ein Arbeitsverzeichnis, in dem die Dokumente abgelegt werden, die im Rahmen des Erstellungsprozesses des Deployment Shares benötigt werden. Dieser hat folgende Struktur:

MDT Arbeitsverzeichnis

Inhalte der Unterordner:

  • Applications: enthält die Beispielanwendung Notepad++ , die in das MDT Deployment-Paket integriert wird.
  • OS Images: enthält die ISO-Datei für Windows 10 Enterprise x64, das wir mit MDT deployen möchten.
  • Packages: enthält ein kumulatives Update für Windows 10, das ebenfalls in das Deployment-Paket integriert werden soll.
  • PowerShell Script: enthält das eigentliche Skript für das automatisierte Setup des MDT Deployment Shares.
  • Task Sequences: enthält zwei xml-Dateien für eine erweiterte Tasksequenz, die wir nach der Ausführung des Skriptes im Ordner der automatisch erstellten Tasksequenz C:\DeploymentShareDemo\Control01 ersetzen können. Dieser Schritt ist optional.

2. ISO-Datei als virtuelles DVD-Laufwerk mounten

Bevor wir das Skript ausführen können, erfolgt noch ein manueller Schritt. Durch einen Doppelklick auf die heruntergeladene Windows 10 ISO-Datei im Arbeitsverzeichnis mounten wir die Dateien als virtuelles DVD-Laufwerk, damit die darin enthaltenen Installationsdateien in MDT importiert werden können.

MDT ISO

3. Skript in der PowerShell ISE öffnen

Im Anschluss öffnen wir das Skript aus dem Unterordner PowerShell Script in der PowerShell ISE.
Bitte beachten: Die ISE muss mit Administrator-Rechten gestartet werden, um das Skript korrekt auszuführen.

Folgender Skript-Code zeigt die Syntax, mit der unser MDT Deployment Share angelegt wird:

# Create Deployment Share
New-Item -Path $DeploymentShareRoot -ItemType directory
New-SmbShare -Name $DeploymentShareSMBName -Path $DeploymentShareRoot
Import-Module "C:\Program Files\Microsoft Deployment Toolkit\bin\MicrosoftDeploymentToolkit.psd1"
New-PSDrive -Name $PSDriveName -PSProvider "MDTProvider" -Root $DeploymentShareRoot -Description "MDT Deployment Share Demo Setup" -NetworkPath $DeploymentShareUNCPath -Verbose | add-MDTPersistentDrive -Verbose

In der PowerShell ISE können wir das Skript als Ganzes oder alternativ die Blöcke einzeln ausführen. Zum Testen empfiehlt es sich, Teilbereiche zu markieren und diese sequentiell auszuführen. Das erleichtert vor allem das Troubleshooting.

MDT PowerShell ISE

4. Skript in der PowerShell ISE ausführen

Nachdem wir einige Parameter, wie z.B. das Root-Verzeichnis für den Deployment Share angepasst haben, kann das PowerShell-Skript ausgeführt werden. Das Skript durchläuft die folgenden Schritte zur Erstellung und Konfiguration des Deployment Shares:

  1. Variablendefinition/-deklaration
  2. Erstellen des Deployment Shares
  3. Erstellen eines Anwendungsordners inkl. hinzufügen der Anwendung Notepad++
  4. Importieren des Betriebssystem-Images für das Deployment von Windows 10
  5. Hinzufügen eines kumulativen Update-Pakets
  6. Erstellen einer Tasksequenz (Standard Upgrade Task Sequence)
  7. Aktualisieren des Deployment Shares

Während der Ausführung des Skriptes können wir über den grünen Fortschrittsbalken sowie den Ausgabebereich in der ISE die ausgeführten Schritte nachvollziehen:

MDT Running PowerShell Script

In Schritt 7 werden u.a. die Boot-Images erstellt und die verwendeten Komponenten in das Image integriert:

MDT Update Deployment Share with PowerShell

Nach Abschluss des Skriptdurchlaufs können die Ergebnisse nun im lokalen Deployment-Verzeichnis und in der Deployment Workbench überprüft werden.

All diese Schritte laufen automatisiert über PowerShell ab. Das Skript läuft in der vorgestellten Konfiguration ca. 15 Minuten. Den größten Teil der Zeit nimmt das Aktualisieren des Deployment Shares in Anspruch. Ohne diesen letzten Schritt wird der Deployment Share in weniger als 5 Minuten angelegt und mit den Zusatzkomponenten für unser Image ausgestattet.

Mit etwas Routine im Umgang mit PowerShell für MDT lässt sich durch die Automatisierung erheblich Zeit einsparen.

5. Ergebnisse in der Deployment Workbench überprüfen

Das Skript hat nun u.a. folgende ISO- und WIM-Dateien für das Deployment erstellt:

MDT Output Deployment Share

Die Ergebnisse überprüfen wir nun in der Deployment Workbench. Dort finden wir den angelegten Deployment Share, die Anwendung Notepad++ innerhalb eines Anwendungsordners, das importierte Windows 10-Image, unser kumulatives Update sowie die automatisch generierte Tasksequenz.

MDT Deployment Share

Die Verteilung des Images erfolgt über den Aufruf der generierten Task Sequence auf dem Client-Rechner, hier am Beispiel eines Windows 7-Rechners, der auf Windows 10 aktualisiert werden soll. Der Shortcut auf dem Desktop zeigt auf den von uns erstellten Deployment Share und bezieht auch die für das Deployment benötigten Dateien von dort:

MDT-9

Nach Anstoß der Tasksequenz erfolgt die Betriebssystemaktualisierung auf Windows 10:

MDT Update

Nach Abschluss des Prozesses, der in meinem Fall etwa 20. Minuten dauerte, wurde unser Windows 7-Rechner auf Windows 10 Enterprise aktualisiert:

MDT Windows 10

Praxistipp: PowerShell-Code in der Deployment Workbench automatisch generieren

Der Skript-Code zur Automatisierung von MDT mit PowerShell lässt sich für viele Aufgaben direkt in der Deployment Workbench generieren. Vor allem für den Einstieg in die Thematik und zu Testzwecken ist dies eine sehr gute Hilfe, um eigene PowerShell-Skripte zu erstellen. Folgender Screenshot zeigt den Import-Assistenten der Deployment Workbench, der nach Abschluss den Button 'View Script' anzeigt. Über diese Schaltfläche kann das zugehörige PowerShell-Snippet exportiert und für eigene Skripte verwendet werden:

MDT Export PowerShell Snippet

Voraussetzungen

Folgende Voraussetzungen müssen zur Ausführung des Beispielskriptes gegeben sein:

Um die Demo selbst nachzuvollziehen, können Sie sich die von mir verwendeten Dateien über folgende Links herunterladen:

  • Herunterladen des Beispielordners MDT Sample Folder
  • Entpacken des Beispielordners (z.B. direkt unter Downloads auf Ihrer lokalen Maschine)
  • Herunterladen der Windows 10 x64 Enterprise Evaluation ISO aus dem TechNet Evaluation Center
  • Herunterladen des kumulativen Updates KB3124263 aus dem Microsoft Update-Katalog

Auf Basis dieses Beispiels können Sie sich Ihren eigenen Deployment Share konfigurieren und zusätzliche Komponenten integrieren.

Viel Spaß damit!

Viele Grüße,
Sebastian Klenk

Technical Evangelist bei Microsoft Deutschland

P.S.: Auf Twitter bin in unterwegs unter @seklenk.

Free eBook: Windows 10 Deployment