Как обновиться с Windows 10 до Windows 11 на неподдерживаемом компьютере
Случилось... Нужно обновлять весь парк рабочих машин с Windows 10 до Windows 11. Притом именно обновлять, чтобы пользователи не потеряли своё файло и натсройки системы. Штож — поехали.
Обходим проверку TPM 2.0 если у вас TPM 1.2
В этом случае не будет проверяться поколение CPU и чип TPM 2.0, но чип TPM 1.2 все еще требуется. Если он отсутствует, вы не сможете выполнить обновление.
Запускаем от имени администратора PowerShell и проверяем есть ли у вас вообще этот TPM. Выполняем команду:
Get-tpm
Если TPM на плате не обнаружено — TpmPresent=False, то для обновления системы до Windows 11 читайте следующий абзац.
А если TPM всё таки есть, то нужно в реестре создать параметр DWORD: AllowUpgradesWithUnsupportedTPMOrCPU, который пропустит мимо глаз требование наличия на плате чипа именно TPM 2.0. Проверку CPU тоже вроде как скипает.
reg add HKLM\SYSTEM\Setup\MoSetup /f /v AllowUpgradesWithUnsupportedTPMorCPU /d 1 /t reg_dword
Теперь обновляйтесь на свою Windows 11...
Обновление до Windows 11 с полностью отсутствующем чипом TPM
Тут в реестр заряжем целую обойму DWORD параметров:
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\CompatMarkers" /f reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Shared" /f reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TargetVersionUpgradeExperienceIndicators" /f reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\HwReqChk" /v "HwReqChkVars" /t REG_MULTI_SZ /s "," /d "SQ_SecureBootCapable=TRUE,SQ_SecureBootEnabled=TRUE,SQ_TpmVersion=2,SQ_RamMB=8192" /f reg add "HKLM\SYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
Никто ответственности не несёт при обновлении до Windows 11 на несоответствующем железе. Ни вендор ни разработчики ОС. Вы сами себе капитан в этом вопросе!
И так, что делают эти команды с нашим реестром. Для начала удаляем записи наших попыток накатить обновление Windows 11. Потом добавляем HwReqChk, что является собой записью о том, что наше железо как бы прошло проверку удачно.
А вот теперь запускаем обновление с Windows 10 на Windows 11 с примонтированного образа.
Ещё есть способ через product server, но ну его куда подальше. Если интересно, поищите в яндексе.
Мне этих двух способов пока что хватало за глаза!
Тихо, идёт обновление до Windows 11
А чтобы автоматически накатить обновление Windows 11 в тихом режиме — у setup.exe есть дополнительные параметры. Для начала желательно отключить хитрый параметр защиты от обновлений:
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /f /v DisableWUfBSafeguards /d 1 /t reg_dword
Или тут: Computer Configuration 👉 Administrative Templates 👉 Windows Components 👉 Windows Update 👉 Manage updates offered from Windows Updates 👉 GPO Disable safeguards for Feature Updates
Запускайте CMD с такими флагами:
start /wait d:\setup.exe /auto upgrade /DynamicUpdate disable /showoobe None /Telemetry Disable /Copylogs %SystemDrive%\temp /EULA Accept /compat IgnoreWarning /NoReboot
Пойдёмте еще дальше. Запускаем от имени администратора PowerShell и подключаемся к нужному ПК командой:
Enter-PSSession computer-name
После чего вы пожете запустить setup.exe с нужными ключами
New-Item -Path "C:\iso\" -ItemType Directory# Создаём каталог, куда скачаем образ $cred = Get-Credential New-PSDrive -Name "TempDrive" -PSProvider FileSystem -Root "\\Server\iso" -Credential $cred# Подключаем сетевую директорию Copy-Item -Path "TempDrive:\ru-ru_windows_11.iso" -Destination "C:\iso\ru-ru_windows_11.iso"# Выкачиваем образ Windows 11 для обновления нашей Windows 10 Remove-PSDrive -Name "TempDrive"# Спасибо, отключаемся :-) Mount-DiskImage -ImagePath "C:\iso\Windows_11.ISO"| Get-Volume# А теперь монтируем скаченный образ в систему # Get-Volume покажет нам сразу какой буквой он подмонтировал диск # Если же вам нужно посмотреть все диски системы, то вам поможет Get-PSDrive Start-Process -FilePath "d:\setup.exe" -ArgumentList "/auto upgrade /DynamicUpdate disable /showoobe None /Telemetry Disable /Copylogs %SystemDrive%\temp /EULA Accept /compat IgnoreWarning /NoReboot" -Wait# Тихонечко обновляем систему # Отмантиравай обратно Dismount-DiskImage -ImagePath "C:\iso\Windows_11.ISO"
Если параноя шепчет: "а точно установка запустилась?" то проверяй вот этим:
Get-Process | Where-Object {$_.ProcessName -match "setup|install|msiexec|windowsupdate"}
Или
Write-Host "Код выхода: $($process.ExitCode)"
Если Код выхода: -2147023278, то это означет ERROR_INSTALL_ALREADY_RUNNING - установка уже запущена.
Все параметры к setup.exe Windows 11
Все параметры можно вывести через 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<locatione>
/Debug:<porte> [BaudRate:<baudratee>]
/DiagnosticPrompt {enable | disable}
/DynamicUpdate {enable | disable}
/EMSPort: {COM1 | COM2 | off} [/emsbaudrate:<baudratee>]
/InstallDrivers<locatione>
/InstallFrom<pathe>
/InstallLangPacks<locatione>
/m:<folder_namee>
/MigNEO Disable
/MigrateDrivers {all | none}
/NetDebug:hostip=<w.x.y.ze>,port=<ne>,key= <q.r.s.te>[,nodhcp][,busparams=n.o.p]
/NoReboot
/PKey<product keye>
/Priority Normal
/PostOOBE<locatione> [\setupcomplete.cmd]
/PostRollback<locatione> [\setuprollback.cmd] [/postrollbackcontext {system / user}]
/Quiet
/ReflectDrivers<locatione>
/ResizeRecoveryPartition {Enable / Disable}
/ShowOOBE {full / none}
/Telemetry {Enable / Disable}
/TempDrive <drive_lettere>
/Unattend:<answer_filee>
/Uninstall {enable / disable}
/USBDebug:<hostnamee>
/WDSDiscover
/WDSServer:<servernamee>