Windows 10 X64 + X86 Setup-Antwortdateien erstellen

Ich habe nun schon einige Anleitungen zu dem Thema PXE-Boot erstellt, darunter war auch eine Anleitung, wie man von dort aus über Netzwerk, Windows installieren kann. An sich ist das schon sehr praktisch, wenn jeder Rechner im Netzwerk von diesem PXE-Server aus starten kann und darüber auch Betriebssysteme installiert werden können.

Heute möchte ich Ihnen daher die Verwendung von Antwortdateien näher bringen. Diese werden beispielsweise benötigt, wenn die Installation komplett unbeaufsichtigt vonstatten gehen soll. Es gibt hier allerlei Variationen und es bestünde auch die Möglichkeit, lediglich Teilbereiche zu automatisieren, die sich eigentlich nie besonders ändern.

Ein mögliches Szenario wären beispielsweise Privatkunden-, Geschäftskunden- und Eigene- Installationen. Sie könnten zwar die Sprache automatisiert setzen lassen und manch andere Dinge auch, nur ist es hier meiner Meinung nach nicht immer vorteilhaft automatisch Benutzer erstellen zu lassen. Da jeder Privatkunde auch so seine ganz eigenen Vorlieben hat, trägt man dies besser manuell ein. Wie das letztendlich jeder handhabt, muss ja jeder selber wissen. Ich zeige Euch daher ein paar allgemeingültige Beispiele.

Kleine Information am Anfang

Ich habe hier nur Windows 10 X64 Beispiele gemacht. Dessen bin ich mir bewusst! Sie können diese aber auch bei x86 Windows Versionen verwenden. Dazu müssen Sie immer nur das amd64 gegen x86 austauschen in den Dateien. Die Dokumentation und die möglichen Werte zu den einzelnen Parametern finden Sie bei den Microsoft Docs

Dem Windows-Setup die Antwortdatei mitgeben

Sie müssen das Setup nur mit einem zusätzlichen Parameter starten:

setup.exe /unattend:DATEINAME.EXTENSION

Beispiel:

setup.exe /unattend:Windows_10_X64_standard_autounattend.xml

Die Antwortdatei liegt dabei im selben Ordner, wie auch die Setup.exe.

Sollte der Pfad abweichen, dann wären folgende Varianten möglich (Die Änderungen sind in fettschrift):

setup.exe /unattend:V:\Windows_10_X64_standard_autounattend.xml
setup.exe /unattend:\\192.168.1.99\Ordner\Windows_10_X64_standard_autounattend.xml

Eine allgemein gehaltene Antwortdatei für Windows 10 X64

Einsatzmöglichkeit: Alle die sich nicht innerhalb einer Domain befinden und frei über Ihr System entscheiden wollen. Sie werden während dem Setup nach dem Installationsort, den Kontodaten und zu diversen Netzwerkeinstellungen gefragt. Der Rest ist automatisiert!

Beispieldatei: Windows_10_X64_standard_autounattend.xml

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <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-DE</UILanguage>
            </SetupUILanguage>
            <InputLocale>de-DE</InputLocale>
            <SystemLocale>de-DE</SystemLocale>
            <UILanguage>de-DE</UILanguage>
            <UserLocale>de-DE</UserLocale>
            <UILanguageFallback>en-US</UILanguageFallback>
        </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">
            <UserData>
                <AcceptEula>true</AcceptEula>
                <FullName></FullName>
                <Organization></Organization>
                <ProductKey>
                    <Key></Key>
                    <WillShowUI>Never</WillShowUI>
                </ProductKey>
            </UserData>
            <DynamicUpdate>
                <Enable>false</Enable>
                <WillShowUI>Never</WillShowUI>
            </DynamicUpdate>
            <EnableFirewall>false</EnableFirewall>
            <LogPath>C:\Log</LogPath>
        </component>
    </settings>
    <settings pass="specialize">
        <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>de-DE</InputLocale>
            <SystemLocale>de-DE</SystemLocale>
            <UILanguage>de-DE</UILanguage>
            <UILanguageFallback>en-US</UILanguageFallback>
            <UserLocale>de-DE</UserLocale>
        </component>
        <component name="Microsoft-Windows-Security-SPP-UX" 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">
            <SkipAutoActivation>true</SkipAutoActivation>
        </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>
				<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <NetworkLocation>Home</NetworkLocation>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
            <TimeZone>Central European Standard Time</TimeZone>
        </component>
    </settings>
    <settings pass="generalize">
        <component name="Microsoft-Windows-Security-SPP" 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">
            <SkipRearm>1</SkipRearm>
        </component>
    </settings>
</unattend>

Viele dieser einzelnen Unterpunkte können Sie auch verstehen, ohne jemals etwas davon gehört zu haben, da einige davon einfach selbsterklärend sind.

In diesem Beispiel wird die Eingabe des Produkt-Keys übersprungen und auch nicht versucht diesen zu validieren. Es kann unter Umständen nämlich trotz richtigen Produkt-Keys passieren, dass dieser als fehlerhaft erkannt wird. Bei Privat-Kunden reicht es im Nachhinein diesen einfach unter Windows selbst zu aktivieren. Sie dürfen es nur nicht vergessen! Da Sie aber so einige Einstellungen unter Windows 10 ohne einen gültigen Produkt-Key erst gar nicht ändern dürften, sollte das ziemlich schnell auffallen.

Veraltete Einträge in dieser Datei:

<NetworkLocation>Home</NetworkLocation>

Mögliche Werte: Home, Work und Other

Ich schreibe dies extra dabei, damit Sie sich schon einmal darauf einstellen können, dass diese bald nicht mehr funktionieren werden! Microsoft selbst hat diese als veraltet gebrandmarkt, was soviel bedeutet wie, dass diese bald komplett entfernt werden oder bereits jetzt schon nicht mehr funktionieren.

Eine personenspezifische Antwortdatei für Windows 10 X64

Einsatzmöglichkeit: Personenspezifische Rechner, die sich nicht innerhalb einer Domain befinden und frei über Ihr System entscheiden wollen. Sie werden nur nach dem Installationsort gefragt! Der Rest ist automatisiert! Wann ist das sinnvoll? Beispielsweise für einen selbst. Wenn Sie selbst Windows installieren wollen, dann wissen sie ja auch, wie sie Ihr Windows gerne haben möchten. Da auch der normale Nutzer äußerst Faul beim installieren ist, will man sich nicht immer durch die langweiligen Dialoge klicken müssen. Privat verwende ich eine ähnliche. Die Login-Daten sind frei erfunden, also versuchen Sie es gar nicht erst 😛

Beispieldatei: Windows_10_X64_DarthVader_autounattend.xml

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <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-DE</UILanguage>
            </SetupUILanguage>
            <InputLocale>de-DE</InputLocale>
            <SystemLocale>de-DE</SystemLocale>
            <UILanguage>de-DE</UILanguage>
            <UserLocale>de-DE</UserLocale>
            <UILanguageFallback>en-US</UILanguageFallback>
        </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">
            <UserData>
                <AcceptEula>true</AcceptEula>
                <FullName></FullName>
                <Organization></Organization>
                <ProductKey>
                    <Key></Key>
                    <WillShowUI>Never</WillShowUI>
                </ProductKey>
            </UserData>
            <DynamicUpdate>
                <Enable>false</Enable>
                <WillShowUI>Never</WillShowUI>
            </DynamicUpdate>
            <EnableFirewall>false</EnableFirewall>
            <LogPath>C:\Log</LogPath>
        </component>
    </settings>
    <settings pass="specialize">
        <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>de-DE</InputLocale>
            <SystemLocale>de-DE</SystemLocale>
            <UILanguage>de-DE</UILanguage>
            <UILanguageFallback>en-US</UILanguageFallback>
            <UserLocale>de-DE</UserLocale>
        </component>
        <component name="Microsoft-Windows-Security-SPP-UX" 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">
            <SkipAutoActivation>true</SkipAutoActivation>
        </component>
        <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">
            <ComputerName>DarthVader-PC</ComputerName>
        </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>
                <JoinWorkgroup>SIDIOUS-NETWORK</JoinWorkgroup>
            </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">
            <UserAccounts>
                <AdministratorPassword>
                    <Value>IchbindeinVater</Value>
                    <PlainText>true</PlainText>
                </AdministratorPassword>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>IchbindeinVater</Value>
                            <PlainText>true</PlainText>
                        </Password>
                        <Group>administrators</Group>
                        <Name>DarthVader</Name>
                        <DisplayName>Darth Vader</DisplayName>
                        <Description>Die dunkle Seite der Macht hahaha</Description>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideLocalAccountScreen>false</HideLocalAccountScreen>
                <NetworkLocation>Home</NetworkLocation>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>3</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
            </OOBE>
            <TimeZone>Central European Standard Time</TimeZone>
        </component>
    </settings>
    <settings pass="generalize">
        <component name="Microsoft-Windows-Security-SPP" 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">
            <SkipRearm>1</SkipRearm>
        </component>
    </settings>
</unattend>

Wie sie vielleicht schon bemerkt haben sind hier folgende Dinge anders:

            <UserAccounts>
                <AdministratorPassword>
                    <Value>IchbindeinVater</Value>
                    <PlainText>true</PlainText>
                </AdministratorPassword>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>IchbindeinVater</Value>
                            <PlainText>true</PlainText>
                        </Password>
                        <Group>administrators</Group>
                        <Name>DarthVader</Name>
                        <DisplayName>Darth Vader</DisplayName>
                        <Description>Die dunkle Seite der Macht hahaha</Description>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>

Hier legen wir einen Benutzer an!

Gruppe: Administrator
Kontoname: DarthVader
Angezeigter Name: Darth Vader
Beschreibung: Die dunkle Seite der Macht hahaha

Wenn Sie mehrere Nutzer haben möchten, kopieren Sie einfach den kompletten Bereich und fügen sie diesen unter dem bestehenden ein.

                    <LocalAccount wcm:action="add">
                        ........
                    </LocalAccount>

Außerdem sind noch folgende Werte zur Individualisierung angegeben:

<ComputerName>DarthVader-PC</ComputerName>
<JoinWorkgroup>SIDIOUS-NETWORK</JoinWorkgroup>

Computername: DarthVader-PC (MAXIMAL 15 Zeichen! Alles darüber kann in Problemen enden)
Arbeitsgruppe: SIDIOUS-NETWORK (Standard ist WORKGROUP)

Sie können die Arbeitsgruppe auch klein schreiben, nur rate ich Ihnen davon ab. Windows selbst schreibt in der Konfigurationsmaske alles groß! Egal was Sie da eingeben! Ob das irgendwelche Konsequenzen nach sich ziehen würde, wenn man das mischen würde, weiß ich nicht.

Veraltete Einträge in dieser Datei:

<NetworkLocation>Home</NetworkLocation>

Mögliche Werte: Home, Work und Other

                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>

Mögliche Werte: Bool, true oder false

Hiermit ist der Willkommensbildschirm gemeint. Trotz, das diese veraltet sind, sind diese immer noch nötig, um in dem aktuellen Windows 1803 Build ALLES zu automatisieren!

In Bearbeitung…


Zum Anfang!

Abonnieren
Benachrichtigen bei
guest
11 Kommentare
Inline-Feedbacks
Alle Kommentare anzeigen
Flutho
Flutho
Gast
21. Januar 2019 18:32

Moin Danke für diese gute Info,

wenn ich nun aber ein Image customized habe, dort unter andrem auch 1 Nutzer Admin, 1 Nutzer Hauptbenutzer & 1 Nutzer Networkoperator, wie bekomme ich es da hin, dass nun ohne das Ganze Thema oobe mit einem der Nutzer starte und ich nur noch das PW angeben muss?
Oder alternativ mit einem Nutzer mit PW starte, dieses aber nur für den ersten start, der aber in Zukunft ein festgelegtes PW aus dem Image nutzt.

Flutho
Flutho
Gast
22. Januar 2019 8:24

Danke für die schnelle Rückmeldung, werde es mal ausprobieren. PW könnte ich sogar eingeben. Geht in wesentlich darum, dass „kein neuer User“ angelegt wird und ein bestehender genommen wird.
Blöde Frage auf die Schnelle. Wo speichere ich die unattended.xml am besten, damit sie beim Start des Image ausgeführt wird.
Wie gesagt es ist ein Image das nach Sysprep /generalize /oobe das auf einen Rechner aufgespielt wird und dann gestartet wird.
Reicht es die Datei in den Ordner c:\windows abzulegen?
In den Beschreibungen finde ich immer nur das Thema bootstick, den nutze ich hier aber nicht.

Flutho
Flutho
Gast
22. Januar 2019 11:35

Das ist halt die Frage, wie verhält sich hier Windows bei der oobe Installation. Wenn im Image schon User vorhanden sind.
A) die user stehen im Installationsprogramm zur Auswahl
B) es muss ein installionsadmin erstellt werden, der im Nachgang per Script gelöscht wird.

Andi
Andi
Gast
29. Oktober 2019 10:45

Hallo,
wie erstelle ich eine Antwortdatei für Geräte, die sich in einer Domäne befinden. Über WDS.
Ich erhalte trotz Einstellungen immer noch Abfragen beim ausführen.

Vielen Dank

FPS
FPS
Gast
9. Juli 2020 16:40

Vielen Dank für diesen tollen Artikel. Für die Servereditionen kann ich auch
supereinfach ISOs erstellen. Weniger Glück hab ich allerdings (noch) für
Windows 10. Bei diesem [1] autounattend.xml weiss ich nicht, wie ich folgende
Angaben automatisieren kann:

-Region
-Keyboard layout
-In der gleichen Maske:
-Online speech recognition
-Location
-Find my device
-Diagnostic data
-Inking & typing
-Tailored experiences
-Advertinsing ID

Ist es ausserdem möglich, den eingebauten „Administrator“-Account zu
aktivieren? Ich benutze den schon auf den Servereditionen, um (per Ansible)
eingeschränkte Accounts einzurichten und möchte auf Desktops keine Ausname
machen.

Vielen Dank!

[1] https://pastebin.pl/view/f4b3cd39

Oliver
Oliver
Gast
9. Februar 2021 11:50

Hallo,
sowas habe ich gesucht! Dazu einige Fragen: Kann ich damit auch gestalten, also zB Background:User:color.
Backgroud Admin:Image path:….
Taskleiste Microsoft-symbols:disable usw?

Und zum Verständnis: Ich habe einen Nagelneuen Rechner, der ist ja meistens Vorinstalliert. Da kann ich dann nen Win10-Stick einstelcken Dann zB E:\setup.exe /unattend:c:\User\PeterPan\Dokuments\DATEINAME.EXTENSION starten? Die Idee wäre, dass man sich ein kleines Progrämmchen schreibt, welches die Eckdaten abfragt (Kundenname, PCname,..) , die xml generiert und danach setup.exe … ausführt.

Hilti
Hilti
Gast
2. Mai 2022 9:58

Guten Tag,

haben sie vielleicht auch noch eine Anleitung wie ich den Kompletten Prozess sauber abwickeln kann?

Unattend.xml einfach mit dem Setup aufrufen geht ja nicht mehr da in Sourcen Ordner eine .esd und keine .wim enthalten ist

11
0
Deine Meinung würde uns sehr interessieren. Bitte kommentiere.x