Стандартный установщик setup.exe в дистрибутивах Windows может использоваться для интерактивной установки операционной системы или обновлению версии ОС на компьютере. Кроме интерактивного режима, setup.exe поддерживает большое количество параметров командной строки, которые будут полезны системным администраторам. С помощью параметров
setup.exe
можно автоматизировать обновление билда (версии) Windows 10/11 на компьютерах пользователей с помощью SCCM, MDT или других средств автоматизации.
В этой статье мы покажем, как получить установочный ISO образ с последним билдом Windows 11 (в нашем примере это 24H2), с помощью параметров командной строки setup.exe выполнить проверку совместимости компьютера с новой версией Windows и выполнить обновление билда (in-place upgrade) в фоновом режиме.
Параметры командной строки установщика Windows (setup.exe)
При обычном запуске программы установки Windows (
setup.exe
) из установочного ISO запускается графический мастер установки/обновления. Однако у программы setup.exe есть большое количество параметров командной строки, позволяющих управлять процессом обновления версии ОС (вплоть до полностью автоматического обновления в фоновом режиме).
Общий синтаксис и доступные параметры утилиты Setup.exe перечислены ниже:
/1394Debug:<channel>
[BaudRate:<baudrate>]
/AddBootMgrLast
/Auto {Clean | DataOnly | Upgrade}
/BitLocker {AlwaysSuspend | TryKeepActive | ForceKeepActive}
/BusParams:<bus.device.function>
/CompactOS {Enable / Disable}
/Compat {IgnoreWarning / ScanOnly}
/CopyLogs<location>
/Debug:<port> [BaudRate:<baudrate>]
/DiagnosticPrompt {enable | disable}
/DynamicUpdate {enable | disable}
/EMSPort: {COM1 | COM2 | off} [/emsbaudrate:<baudrate>]
/InstallDrivers<location>
/InstallFrom<path>
/InstallLangPacks<location>
/m:<folder_name>
/MigNEO Disable
/MigrateDrivers {all | none}
/NetDebug:hostip=<w.x.y.z>,port=<n>,key= <q.r.s.t>[,nodhcp][,busparams=n.o.p]
/NoReboot
/PKey<product key>
/Priority Normal
/PostOOBE<location> [\setupcomplete.cmd]
/PostRollback<location> [\setuprollback.cmd] [/postrollbackcontext {system / user}]
/Quiet
/ReflectDrivers<location>
/ResizeRecoveryPartition {Enable / Disable}
/ShowOOBE {full / none}
/Telemetry {Enable / Disable}
/TempDrive <drive_letter>
/Unattend:<answer_file>
/Uninstall {enable / disable}
/USBDebug:<hostname>
/WDSDiscover
/WDSServer:<servername>
Список доступных параметров установки можно вывести так:
setup.exe /?

Подробную информацию об всех опциях setup.exe и возможных значениях можно получить на странице документации: https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-command-line-options?view=windows-11
Генерация актуального установочного ISO образа Windows 11
Чтобы выполнить обновление, вам нужно получить установочный ISO образ с последней версией Windows (на данный момент это Windows 11 24H2).
Вы можете сгенерировать установочный ISO образ с помощью официальной утилиты Media Creation Tool или скачать актуальный Windows 11 multi-edition x64 ISO со страницы загрузки Microsoft (https://www.microsoft.com/en-us/software-download/windows11)

Смонтируйте полученный ISO образ в Windows и распакуйте содержимое образа на файловый сервер.

Проверка совместимости системы с новым билдом Windows 11
Прежде чем приступать к обновлению ОС, нужно проверить, совместим ли компьютер с новым билдом Windows 11, который находится в установочном образе. Откройте командную строку, перейдите в каталог с образом и выполните:
cd c:\Iso\W1124h2
start /wait SETUP.EXE /Auto Upgrade /NoReboot /DynamicUpdate Disable /Compat ScanOnly
Здесь используются такие параметры setup.exe:
- /Auto Upgrade – автоматический режим обновления;
- /NoReboot – запретить перезагрузку компьютера;
- /DynamicUpdate Disable —не нужно загружать последние обновления через Windows Update;
- /Compat ScanOnly – выполнить только проверку совместимости, без выполнения обновления.
В данном случае мастер обновления вернул, что обновление невозможно, т.к. компьютер не совместим с требованиями из-за недостаточного размер системного диска.

Можно скрыть графическое окно мастера обновления Windows 11 Setup и вернуть от setup.exe только результат проверки, добавив параметр Quiet .
start /wait setup.exe /Auto Upgrade /Quiet /NoReboot /DynamicUpdate Disable /Compat ScanOnly
После выполнения этой команды, выведите содержимое переменной:
echo %errorlevel%
Здесь будет указан статус проверки на совместимость с новым билдом.

В нашем случае команда вернула значение
-1047526912
. Что означает это значение? (в скобках указан шестнадцатеричный код ошибки, его можно получить в калькуляторе преобразовав DEC в HEX значение)
-
-1047526896 (0xC1900210)– ошибок совместимости не найдено -
-1047526912 (0xC1900200)– компьютер не совместим с минимальными системными требованиями Windows 11 (см. как выполнить обновление Windows 11 на неподдерживаемом железе) -
-1047526904 (0xC1900208)– несовместимое окружение (hard block) -
-1047526898 (0xC190020E)– недостаточно свободного места на диске -
-1047526908 (0xC1900204)– неверная редакция или архитектура образа

C:\$Windows.~BT\Sources\Panther\
, которые генерирует setup.exe в процессе проверки.Для получения более детальной информации о причине невозможности обновить версию Windows 11 используется утилита setupdiag.exe.
При наличии SCCM вы можете централизованно собрать значения статуса
errorlevel
с компьютеров пользователей простым пакетом с командой
setup.exe /Compat ScanOnly ….

Автоматическое обновления билда Windows 11 из командной строки
Если вы не выявили проблем совместимости, которые мешают обновлению билда Windows, можете запустить автоматическое обновление версии ОС на компьютере с помощью простого скрипта. Создайте в сетевой папке с распакованным образом Windows 11 bat файл run_win_upgrade.bat со следующим кодом:
start /wait .\W1124h2\setup.exe /auto upgrade /DynamicUpdate disable /showoobe None /Telemetry Disable /Copylogs %SystemDrive%\temp /EULA Accept /compat IgnoreWarning /NoReboot

Мы использовали такие параметры обновления:
- /Auto:Upgrade сохранить все установленные приложения и данные пользователей.
- /ShowOOBENone – пропустить экран первоначальной настройки (OOBE)после обновления Windows
- Можно добавить параметр /migratedrivers all. Используется для принудительного переноса всех драйверов. Если параметр не задан, установщик сам принимает решения по каждому драйверу индивидуально.
- /Copylogs %SystemDrive%\temp – поместить логи обновления в указанный каталог
- /Telemetry Disable – отключить запись и отправку отчетов телеметрии при установке
- /EULA Accept – принять лицензионное соглашение
- /Unattend:unattend.xml – позволяет задать файл ответа для установки (не используется в нашем примере)
- /Quiet – выполнить обновление в фоновом режиме. Все графические окна Windows Setup не будут отображаться пользователю (автоматическая установка обновления).
- /Priority low|normal – увеличить или уменьшить приоритет процесса Windows Setup
- /CompactOS enable|disable – включить или отключить сжатие файлов с помощью функции Compact OS (позволяет сэкономить место на диске)
- /BitLocker AlwaysSuspend — приостановить шифрование BitLocker при обновлении
- /Compat IgnoreWarning – игнорировать все сообщения о несовместимости, которые можно пропустить
- /NoReboot – не перезагружать компьютер автоматически после выполнения обновления.

Начиная с Windows 10 1607 вы можете указывать параметры установки через файл Setupconfig.ini. Этот файл должен находится в каталоге с setup.exe и содержать примерно такой текст, аналогичный команде выше:
[SetupConfig] NoRebootShowOobe=None Telemetry=Disable DynamicUpdate=Disable
Для запуска обновления Windows 11 с помощью файла параметров используется команда:
Setup.exe /ConfigFile setupconfig.ini


Прикольно. Но зачем?
Автоматизация обновления билдов для небольших сетей. Можно централизованно управлять обновлением тихим билда из сетевой даже через GPO или скрипты.
Команда для SCCM — setup.exe /Compat ScanOnly …
3 точки это опечатка?
Тут речь о том, что вы сами можете подобрать нужные параметры. Или использовать мои вариант setup.exe чуть выше.
подскажите, какие настройки выполнить для клиента (естественно через GPO),когда новая сборка установилась с WSUSа, и заставить компьютер ночью перезагрузиться с установкой нового билда. обычная настройка перезагрузки для установки обновлений не запускает установку новой сборки. а если пользователь выбирает обновить и завершить, то на утро получает 30 минутный перерыв в виде «синего экрана» с надписью «подождите, идет установка обновлений». вопрос только про установку Билда. с установкой обновлений проблем нет
В GPO ничего подобного нет. В этом случае наверно лучше использовать некое внешнее средство для раскатки нового билда ( SCCM, скрипты).
Либо как вариант, можно сделать отдельную политику WSUS с security filtering на группу компьютеров с автоустановкой и перезагрукой для апдейта билда. Вам нужно будет периодически добавлять в эту группу компьютеры для планового автообновления и затем через какое-то время исключать. Но тут нужно все правильно планировать и, конечно, понадобится ручное добавление/исключение компьютеров из группы.
Встал вопрос обновить все ПК до билда 22H2. Причем у существующих ПК текущие билды от 1809 до 21H2.
Какие пакеты обновлений мне выбрать чтобы ТОЛЬКО перейти на последний билд винды? Без всех остальных обновлений.
Качаете ISO образ Win22H2 и выполняете с него обновление по этой статье.
Отдельными апдейтами вы билд не поднимите.
Все остальные обновления будут на новый билд будут приезжать стандартно через wsus/windows update
От 20H1 до 21H2 можете воспользоваться обновлением KB5015684, поднимет версию билда до 22H2. Все, что ниже 20H1 только через обновление или через чистую установку.
большое спасибо. а где по подробнее почитать про Setupconfig.ini
Setupconfig.ini почемуто толком не задокументирован.
Вот тут немного есть
_https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-automation-overview?view=windows-11#setupconfigini
Подскажите, после того как распаковал iso в сетевую папку и создал рядом батник, как запустить обновление, нужно этот батник запускать с того компьютера где требуется обновление или как то удаленно можно его запустить чтоб применился для определенного компьютера?
Да, нужно запускать батник на компьютере, который обновляете.
На удаленном компьютере можно выполнить, заядя на него локально, по rdp или любой утилитой удаленного управления.
Либо запустить через консольную удаленную сесссию: через psexec или Powershell remoting (Invoke-Command или Enter-PSSession)