Mit der Autounattend.xml können Windows-Setups „einfach“ automatisiert werden. Der Windows System Image Manager aus dem Windows Assessment and Deployment Kit (ADK) hilft bei der Erstellung einer Autounattend.xml.
Inhaltsverzeichnis
Windows Assessment and Deployment Kit (ADK)
Das frei erhältliche Windows ADK von Microsoft enthält Tools die eine angepasste und automatisierte Windows-Installation ermöglichen. Vor allem der Windows System Image Manager und Kommandozeilentools wie Dism und Ocdimg sind essentiell.
Windows Installationsmedium
Zur Anpassung bzw. Automatisierung wird der Inhalt einer Windows-Installations-DVD bzw. ISO-Datei auf die Festplatte kopiert (z.B.: C:\Win10-Setup). Falls keine DVD oder ISO zur Verfügung steht, kann die Windows 10 1709 ISO kostenlos bei Microsoft heruntergeladen werden.
Windows System Image Manager
Nachdem Start muss die install.wim in C:\Win10-Setup\sources ausgewählt und entweder eine neue Autounattend.xml erstellt oder eine bestehende geöffnet werden. Danach können im „Windows-Image“-Bereich die einzelnen „Components“, also Einstellungsmöglichkeiten, in die Antwortdatei hinzugefügt und im Eigenschaftsbereich (rechts) konfiguriert werden. Fehlerhafte Einstellungen werden im Bereich „Meldungen“ angezeigt.
Weitere Infos: Microsoft.com – Windows System Image Manager User Interface
Audit- oder OOBE-Mode?
Audit Mode
Bei einem Audit-Mode-Setup wird ein sogenanntes Referenz-System installiert und angepasst (z.B. Programme installiert). Danach wird das System mit sysprep /generalize generalisiert und ein Image erstellt. Dieses Image wird dann auf andere Computer wiederhergestellt.
Vorteil: Ein fertig installiertes und konfiguriertes System kann schnell bereitgestellt werden.
Nachteil: Installierte Programme/Treiber, gesetzte Einstellungen sind im Image verankert und müssen dort gepflegt werden.
Out of Box Experience (OOBE) Mode
Mit einem Out of Box Experience (OOBE) Setup wird bereits ein auslieferungsfähiges System installiert. Die restlichen Anpassungen (z.B.: Programme installieren) werden nach dem Windows Setup durchgeführt.
Vorteil: Programme etc. sind vom Windows Setup entkoppelt und können separat gepflegt werden (keine umfangreiche Imagepflege).
Nachteil: Programme etc. müssen nach dem Setup via Silent-Setups, Scripts und/oder Gruppenrichtlinien angewendet werden (evtl. zeitintensiv).
Weitere Infos: Microsoft.com – Understanding Servicing Strategies
Vorarbeiten: Domain-Beitritt
Da das Domainbeitritt-Passwort unverschlüsselt in der Autounattend.xml steht, sollte ein eigens dafür erstelltes, minimal berechtigtes Benutzerkonto verwendet werden.
- Active Directory-Benutzer und -Computer starten
- Gruppe ohne weitere Berechtigungen erstellen (z.B. Gruppenname: Nix)
- Benutzerkonto erstellen (z.B. Benutzername: domjoin)
- Benutzer der Gruppe hinzufügen und als Hauptgruppe hinterlegen
- Benutzer aus der Domain-Benutzer-Gruppe entfernen
- Eigenschaftsfenster der Domain öffnen → Sicherheit
- erstelltes Benutzerkonto hinzufügen → Erweitert
- Berechtigung setzen: „Computer“-Objekte erstellen
Autounattend.xml OOBE-Beispiele für BIOS/UEFI (schnell)
ACHTUNG: Bestehende Partitionen werden gelöscht und neu erstellt!
Die folgenden Autounattend-Beispiel-Downloads enthalten schnell einsatzbereite, gezippte Autounattend.xml-Dateien für BIOS- bzw. UEFI-Systeme.
Diese enthalten die folgenden Einstellungen:
- Spracheinstellungen: Deutsch (Österreich)
- Festplatten/Partitions-Konfiguration:
- DiskID 0 wird verwendet und gelöscht (!)
- Systempartitionen werden angelegt
- Windows-Partition wird mit maximal möglicher Partitionsgröße erstellt
- Windows 10 Pro wird installiert
- Windows-Key muss noch in „Key einfügen“ gesetzt werden!
- Windows-Benutzer (mit lokalen Administrator-Rechten) namens „admin“ und Passwort „admin“ wird erstellt
(das echte Administrator-Konto erhält kein Passwort und ist deaktiviert)
Da theoretisch nur mit dem Windows Editor (Notepad) der entsprechende Windows-Key einfügt werden muss, sind diese Dateien fast sofort einsatzbereit! Das Passwort des Admin-Benutzers sollte aber im Anschluss sofort geändert werden!
Autounattend BIOS (5834 Downloads )
Autounattend UEFI (9884 Downloads )
SCHNELLSTART-TIPP: Mit dem Media Creation Tool einen bootfähigen Windows-Setup-USB-Stick erzeugen (min. USB 3.0 empfohlen!). Danach einfach die passende Autounattend auf den USB-Stick kopieren und auf Autounattend.xml umbenennen!
Autounattend.xml OOBE-Beispiel (ausführlicher)
Leider gestaltet sich der Einstieg trotz Windows System Image Manager etwas schwieriger und ist ohne weitere Doku nicht selbsterklärend. Das folgende Beispiel soll daher beim Erststart helfen und sollte zur weiteren Bearbeitung im Windows System Image Manager geöffnet werden. ACHTUNG: im Beispiel werden bestehende Partitionen gelöscht und neu erstellt!
In jedem Fall zu prüfen/anzupassen sind:
- Windows-Version: Windows 10 Pro
- Organization ändern (aktuell: Mustermann GmbH)
- Domainbeitritt: Credentials setzen
- MachineObjectOU anpassen
- Manufacturer ändern (aktuell: Mustermann GmbH)
- SupportPhone ändern (aktuell: +43 (0) 000 / 00000)
- Lokaler Administrator: Passwort setzen
- Automatische Windows-Anmeldung als Administrator
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<servicing></servicing>
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>DE-AT</UILanguage>
</SetupUILanguage>
<InputLocale>0c07:00000407</InputLocale>
<UILanguage>de-DE</UILanguage>
<UILanguageFallback>de-DE</UILanguageFallback>
<UserLocale>de-AT</UserLocale>
<SystemLocale>de-DE</SystemLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>2</Order>
<Type>Primary</Type>
<Extend>true</Extend>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Size>500</Size>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>System reserviert</Label>
<Order>1</Order>
<PartitionID>1</PartitionID>
<TypeID>0x27</TypeID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Order>2</Order>
<Active>true</Active>
<Format>NTFS</Format>
<Label>System</Label>
<Letter>C</Letter>
<PartitionID>2</PartitionID>
</ModifyPartition>
</ModifyPartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>2</PartitionID>
</InstallTo>
<WillShowUI>OnError</WillShowUI>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/image/name</Key>
<Value>Windows 10 Pro</Value>
</MetaData>
</InstallFrom>
</OSImage>
</ImageInstall>
<UserData>
<AcceptEula>true</AcceptEula>
<Organization>Mustermann GmbH</Organization>
<ProductKey>
<Key></Key>
<WillShowUI>OnError</WillShowUI>
</ProductKey>
</UserData>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OEMInformation>
<Manufacturer>Mustermann GmbH</Manufacturer>
<SupportURL></SupportURL>
<SupportPhone>+43 (0) 000 / 00000</SupportPhone>
<HelpCustomized>false</HelpCustomized>
</OEMInformation>
<ComputerName></ComputerName>
<RegisteredOrganization>Mustermann GmbH</RegisteredOrganization>
</component>
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<Credentials>
<Domain>domainname.local</Domain>
<Password>passwort</Password>
<Username>domainjoin</Username>
</Credentials>
<JoinDomain>Domainname</JoinDomain>
<MachineObjectOU>OU=Clients,DC=domainname,DC=local</MachineObjectOU>
</Identification>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value></Value>
<PlainText>false</PlainText>
</Password>
<DisplayName>Administrator</DisplayName>
<Name>administrator</Name>
<Group>Administrators</Group>
</LocalAccount>
</LocalAccounts>
<AdministratorPassword>
<Value></Value>
<PlainText>false</PlainText>
</AdministratorPassword>
</UserAccounts>
<AutoLogon>
<Password>
<Value></Value>
<PlainText>false</PlainText>
</Password>
<Domain></Domain>
<Enabled>true</Enabled>
<Username>administrator</Username>
</AutoLogon>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Reseal>
<Mode>OOBE</Mode>
</Reseal>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>0c07:00000407</InputLocale>
<SystemLocale>de-DE</SystemLocale>
<UILanguage>de-DE</UILanguage>
<UILanguageFallback>de-DE</UILanguageFallback>
<UserLocale>de-AT</UserLocale>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:c:/win10-setup/sources/install.wim#Windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
Code-Sprache: HTML, XML (xml)
Weitere Infos: Microsoft.com – Unattended Windows Setup Reference
Computernamen korrigieren
Wenn kein Computername in der Autounattend.xml angegeben wird, generiert das Setup den Namen automatisch. Der Administrator sollte den Namen nach Abschluss des Setups entsprechend ändern.
Andere Möglichkeiten, die den Umfang dieses Beitrags leider sprengen würden:
- Prestaged Computers in Windows-Bereitstellungsdiensten (WDS)
- Windows PE Umgebung, mit selbst gebauten Scripts, die eine manuelle Eingabe des Computernamens ermöglicht und die Autounattend.xml entsprechend adaptiert.
Windows Updates mit Dism integrieren
Um eine schnelle Windows-Bereitstellung zu ermöglichen, sollten die aktuell notwendigen/verfügbaren Updates gleich in die Installationsressource integriert werden. Dazu gehört auf jeden Fall das letzte kumulative Windows 10 Update, dass im Microsoft Update Katalog bezogen werden kann (suche nach: Windows 10 1709 cumulative).
Dism /Mount-Wim /WimFile:C:\Win10-Setup\sources\install.wim /Name:"Windows 10 Pro" /MountDir:C:\Win10-Mount
Dism /Add-Package /PackagePath:C:\Win10-Updates\Windows10-KBxxxxxxx-x64.msu /Image:C:\Win10-Mount /LogPath:AddPackage.log
Dism /Unmount-Wim /MountDir:C:\Win10-Mount /Commit
Code-Sprache: JavaScript (javascript)
Weitere Infos: Microsoft.com – Mount and Modify a Windows Image using Dism, Microsoft.com – Add updates to customized Windows images
Treiber mit Dism integrieren
Die Treiber können in einem Verzeichnis gesammelt und gemeinsam integriert werden („/Recurse“):
Dism /Mount-Wim /WimFile:C:\Win10-Setup\sources\install.wim /Name:"Windows 10 Pro" /MountDir:C:\Win10-Mount
Dism /Image:C:\Win10-Mount /Add-Driver /Driver:C:\Treiber /Recurse
Dism /Unmount-Wim /MountDir:C:\Win10-Mount /Commit
Code-Sprache: JavaScript (javascript)
Weitere Infos: Microsoft.com – Add and Remove Drivers to an Offline Windows Image
Install.wim bereinigen
Die Dateigröße der Install.wim wächst leider schnell an. Besonders wenn ein Kumulatives Windows Update integriert wird. Die Image-Datei sollte daher im Anschluss bereinigt und neu geschrieben werden. Wenn die neue Install.wim funktioniert, kann die alte Datei gelöscht werden.
Dism /Mount-Wim /WimFile:C:\Win10-Setup\sources\install.wim /Name:"Windows 10 Pro" /MountDir:C:\Win10-Mount
Dism /Image:C:\Win10-Mount /Cleanup-Image /StartComponentCleanup /ResetBase
Dism /Unmount-Wim /MountDir:C:\Win10-Mount /Commit
Dism /Compress:max /Export-Image /SourceImageFile:C:\Win10-Setup\sources\install.wim /Name:"Windows 10 Pro" /DestinationImageFile:C:\Win10-Setup\sources\install_CLEAN.wim
Code-Sprache: JavaScript (javascript)
Weitere Infos: Microsoft.com – Reduce the Size of the Component Store…, Microsoft.com – DISM Image Management Command-Line Options
Windows-Installation mit Setupcomplete.cmd fortsetzen/abschließen
Nach einer automatisierten Windows-Installation sollen ggf. noch weitere automatische Anpassungen/Installationen im gestarteten Windows durchgeführt werden. Das Script muss als %WINDIR%\Setup\Scripts\SetupComplete.cmd in der install.wim gespeichert werden. Da nicht bei jeder kleinen Änderung eine Anpassung dieser Datei im Image notwendig sein sollte, empfiehlt sich die Auslagerung ins Netzwerk. Die integrierte SetupComplete.cmd enthält z.B. nur Befehle zum Verbinden eines Netzlaufwerks (z.B. net use S: \\server\freigabe$) oder einer Freigabe und holt das tatsächliche Script sowie dazugehörige Programme, Setupdateien von dort ab. Im Anschluss wird der Computer neu gestartet (z.B. shutdown -r -f -t 0) und der Benutzer führt seine erste Anmeldung durch.
Dism /Mount-Wim /WimFile:C:\Win10-Setup\sources\install.wim /Name:"Windows 10 Pro" /MountDir:C:\Win10-Mount
Code-Sprache: JavaScript (javascript)
C:\Win10-Mount\Windows\Setup\Scripts\SetupComplete.cmd erstellen
Dism /Unmount-Wim /MountDir:C:\Win10-Mount /Commit
Weitere Infos: Microsoft.com – Add a Custom Script to Windows Setup
Windows Autounattend DVD-ISO erzeugen
Die Autounattend.xml muss in diesem Beispiel in C:\Win10-Setup gespeichert werden!
Im Anschluss wird mit Oscdimg schnell und einfach eine bootfähige und installierbare Windows-Setup-ISO-Datei erstellt.
Oscdimg –lAIO_OS -m -u2 –bC:\Win10-Setup\boot\etfsboot.com C:\Win10-Setup C:\Win10.iso
Code-Sprache: CSS (css)
Weitere Infos: Microsoft.com – Oscdimg
Windows Autounattend DVD-ISO testen
Wenn alles funktioniert, sollte nur mehr ein Boot von der DVD notwendig sein. Die sonst notwendigen, manuellen Setupeingaben sollten durch die Autounattend.xml abgedeckt sein. Idealerweise testet man die neu erstellte Windows-Setup-DVD in einer virtuellen Umgebung (z.B. Hyper-V oder Virtualbox).