Использование autounattend.xml для автоматизации установки Windows с помощью загрузчика Ventoy

В компании, в которой я работаю, нам иногда приходится создавать серверы, которые мы продаем клиентам. Часть этого процесса включает установку ОС, и раньше мы использовали Windows 10 Ent. Интернет вещей и Windows Server 2019. Теперь, с выпуском Windows 11 Ent. IoT в последнее время надеемся перейти на эту ОС.

В настоящее время у меня есть флэш-накопитель, который я использовал в качестве загрузчика Ventoy для хранения нескольких ISO (поскольку иногда нам все еще необходимо загружать эти другие операционные системы). Однако раньше нам приходилось вставлять только ключ продукта в ISO, а остальную часть процесса установки приходилось выполнять вручную. Помимо автоматизации разделения диска и места установки (которые я намеренно опустил в файле ответов), я хочу использовать autounattend и/или sysprep для достижения полностью автоматизированного процесса установки.

Проблема в том, что при загрузке этого ISO из Ventoy с файлом autounattend.xml на несколько секунд загружается только черный экран со сплошным курсором консоли, а затем возвращается в меню Ventoy. Это говорит мне о том, что он не распознает ISO как загрузочный. Я не вносил изменений в ISO, кроме добавления файла autounattend.xml в корень. Я не уверен, связано ли это с Windows 11 или, возможно, проблема где-то в другом месте. Я видел в Интернете, что предположительно вы можете использовать autounattend только с ISO (например, не используя такое программное обеспечение, как Rufus, для монтирования ISO на USB и размещения файла в корне USB). В WSIM ошибок проверки, по крайней мере, нет... В любом случае, вот мой файл автоотключения. Я изменил информацию о пользователе и ключ продукта по очевидным причинам. Любая помощь очень ценится.

      <?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <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>0409:00000409</InputLocale>
            <SystemLocale>en-US</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback>en-US</UILanguageFallback>
            <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">
            <TimeZone>Central Standard Time</TimeZone>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <NetworkLocation>Home</NetworkLocation>
                <ProtectYourPC>3</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
            </OOBE>
            <UserAccounts>
                <AdministratorPassword>
                    <PlainText>true</PlainText>
                    <Value></Value>
                </AdministratorPassword>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Group>Administrators</Group>
                        <Name>User</Name>
                        <Password>
                            <PlainText>true</PlainText>
                            <Value>Password</Value>
                        </Password>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
        </component>
    </settings>
    <settings pass="specialize">
        <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">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Order>1</Order>
                    <Path>net accounts /maxpwage:unlimited</Path>
                    <WillReboot>Never</WillReboot>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Order>2</Order>
                    <Path>net user User /active:Yes</Path>
                    <WillReboot>Never</WillReboot>
                </RunSynchronousCommand>
            </RunSynchronous>
        </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-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>WORKGROUP</JoinWorkgroup>
            </Identification>
        </component>
    </settings>
    <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">
            <InputLocale>0409:00000409</InputLocale>
            <SystemLocale>en-US</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback>en-US</UILanguageFallback>
            <UserLocale>en-US</UserLocale>
            <SetupUILanguage>
                <UILanguage>en-US</UILanguage>
            </SetupUILanguage>
        </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">
            <Diagnostics>
                <OptIn>false</OptIn>
            </Diagnostics>
            <DynamicUpdate>
                <Enable>false</Enable>
                <WillShowUI>OnError</WillShowUI>
            </DynamicUpdate>
            <UserData>
                <AcceptEula>true</AcceptEula>
                <ProductKey>
                    <Key>omitted</Key>
                </ProductKey>
            </UserData>
        </component>
    </settings>
</unattend>

1 ответ

Что ж, я нашел решение, которое работает, и, по сути, ответил на свой вопрос.

Я более подробно изучил документацию Ventoy и обнаружил, что у них есть поддержка автоматической установки (https://www.ventoy.net/en/plugin_autoinstall.html ).

В отличие от воссоздания нового ISO с файлом автоматической установки внутри, это включало только импорт файла .xml в каталог на USB-накопителе, указанный в конфигурации ventoy.json, и сопряжение его с желаемым образом .iso. Очень просто и, честно говоря, намного проще, чем стандартный метод, который, очевидно, не работает в сочетании с Ventoy.

Другие вопросы по тегам