4

I am trying to create a Windows Server 2016 Datacentre template for cloud deployment using sysprep and unattend.xml. After syspreping, on first logon I am still getting License terms screen where I have to accept the terms License terms accept screen

This creates a problem as I am unable to RDP into the server before accepting the terms, which means I have to go through the console.

Here is my unattend.xml file:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="wow64" 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>en-GB</InputLocale>
            <SystemLocale>en-GB</SystemLocale>
            <UILanguage>en-GB</UILanguage>
            <UILanguageFallback>en-GB</UILanguageFallback>
            <UserLocale>en-GB</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" 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>
            </OOBE>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cscript //b c:\windows\system32\slmgr.vbs /ato</CommandLine>
                    <Description>Force Windows Activation</Description>
                    <Order>1</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <Order>2</Order>
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update&quot; /v AUOptions /t REG_DWORD /d 00000004 /f</CommandLine>
                    <Description>Turn on automatic updates</Description>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update&quot; /v ElevateNonAdmins /t REG_DWORD /d 00000001 /f</CommandLine>
                    <Description>Allow all users (regardless of admin) to manage updates</Description>
                    <Order>3</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update&quot; /v IncludeRecommendedUpdates /t REG_DWORD /d 00000001 /f </CommandLine>
                    <Description>Include Recommended as well as important</Description>
                    <Order>4</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update&quot; /v ScheduledInstallDay /t REG_DWORD /d 00000000 /f</CommandLine>
                    <Description>Install every day</Description>
                    <Order>5</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update&quot; /v ScheduledInstallTime /t REG_DWORD /d 00000003 /f</CommandLine>
                    <Description>3am installation</Description>
                    <Order>6</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ExtensionAgents&quot; /v snmptools /t REG_SZ /d &quot;SOFTWARE\snmptools\CurrentVersion&quot; /f</CommandLine>
                    <Description>Registry entry for snmp monitoring</Description>
                    <Order>7</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\snmptools\currentversion&quot; /v counters /t REG_SZ /d &quot;%PROGRAMFILES(x86)%\SnmpTools\counter.ini&quot; /f</CommandLine>
                    <Description>Registry entry for snmp monitoring</Description>
                    <Order>8</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\snmptools\currentversion&quot; /v debug /t REG_SZ /d &quot;0&quot; /f</CommandLine>
                    <Description>Registry entry for snmp monitoring</Description>
                    <Order>9</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\snmptools\currentversion&quot; /v pathname /t REG_SZ /d &quot;%systemroot%\snmptools.dll&quot; /f</CommandLine>
                    <Description>Registry entry for snmp monitoring</Description>
                    <Order>10</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd /c mkdir &quot;%PROGRAMFILES(x86)%\SnmpTools&quot; &amp; type NUL &gt; &quot;%PROGRAMFILES(x86)%\SnmpTools\counter.ini&quot;</CommandLine>
                    <Description>Create snmp counter file and folder</Description>
                    <Order>11</Order>
                    <RequiresUserInput>false</RequiresUserInput>
                </SynchronousCommand>
            </FirstLogonCommands>
            <UserAccounts>
                <AdministratorPassword>
                    <Value>ADMINPASSWORD</Value>
                    <PlainText>false</PlainText>
                </AdministratorPassword>
            </UserAccounts>
        </component>
    </settings>
    <settings pass="offlineServicing">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" 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>*</ComputerName>
        </component>
    </settings>
    <settings pass="specialize">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" 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></ComputerName>
            <CopyProfile>true</CopyProfile>
            <ProductKey>PRODUCTKEY</ProductKey>
        </component>
    </settings>
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-Setup" processorArchitecture="x86" 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>
            </UserData>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/users/USER/documents/tasks/windows%202016%20template%20task/install.wim#Windows Server 2016 SERVERDATACENTER" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Did anyone come across this issue before? Any ideas on how to solve this? Any help would be much appreciated.

3
  • I have tried a few different things since I posted this question such as adding: <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> to the OOBE section of unattend.xml.
    – Tom
    Feb 10, 2017 at 14:34
  • did you ever get to the bottom of this? I am facing the same issue.
    – TheRealTy
    Jul 4, 2022 at 23:10
  • For those needing to get past this remotely: Enter-PSSession <computername> Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OOBE -Name SetupDisplayedEula -Value 1 -Type DWord shutdown -r
    – Brain2000
    Jul 21, 2023 at 21:18

4 Answers 4

1

In my case this works as expected:

<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State Jump " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance Jump ">
  <UserData>
        <AcceptEula>true</AcceptEula>
        <FullName>AdminAccount</FullName>
        <Organization>OrgName</Organization>
  </UserData>
  <EnableFirewall>false</EnableFirewall>
  <EnableNetwork>true</EnableNetwork>
</component>
1

I had the issue that I needed to accept the EULA during the Windows setup steps before Windows is even installed. This helped me to get rid of the EULA window during the setup: * In Windows System Image Manager, having opened the answer file and the Windows image * Under "amd64_Microsoft-Windows-Setup_..._neutral" I right clicked "UserData" and added this to "Pass 1 windowsPE" * In the answer file under amd64_Microsoft-Windows-Setup_neutral\UserData, I set "AcceptEula" to true

This added a

<UserData>
    <AcceptEula>true</AcceptEula>
</UserData>

block to my answer file and got rid of the EULA window during the setup. On first logon, there is no further EULA accepting necessary.

0

This will make your user set an admin password and bypass all other setup options:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <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">
            <ShowWindowsLive>false</ShowWindowsLive>
            <TimeZone>Central Standard Time</TimeZone>
        </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-SQMApi" 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">
        <CEIPEnabled>0</CEIPEnabled>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <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>en-US</InputLocale>
            <SystemLocale>en-US</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UserLocale>en-US</UserLocale>
        </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">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
            </OOBE>
        </component>
    </settings>
</unattend>
1
  • Thank you for your suggestion however I have a script setting up/resetting password on first boot/request from client portal so I cannot use this
    – Tom
    Mar 7, 2017 at 17:32
0

Slightly off-topic, but running setup.exe on the command prompt with /auto update argument should also skip the License terms accept screen for those doing upgrades over RDP:

d:\setup.exe /auto update

More information at Microsoft docs here.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .