Уже не первый раз встречаюсь с проблемой, когда при перезагрузке или выключении Windows, появляется надпись ‘
Подготовка Windows. Не выключайте компьютер
‘ (
Getting Windows Ready. Don’t turn off your computer
) и висит на этом этапе часами. Проблема наиболее характерна для Windows Server 2022/2019/2016 и появляется она после установки обновлений Windows или добавления/удаления ролей и компонентов, но может встречаться и на Windows 10/11.
Основной совет при появление такой надписи: проявите терпение и дождитесь, пока Windows закончит установку обновлений/компонент. Если вы регулярно устанавливаете обновления на компьютере, то в редких случаях завершение их установки будет занимать более 1 часа. Если вы не ставили обновления довольно давно, или производительность компьютера невысокая – такая установка может занять несколько часов.
В некоторых случаях действительно, надпись ‘Подготовка Windows‘ может висеть часами, сутками или даже бесконечно. В этом и других случаях, когда вы осознанно хотите выключить или перезагрузить компьютер, вы можете прервать этот процесс (с рисками целостности образа, но иногда выбора просто нет).
Далее рассмотрим мягкий способ завершения всех фоновых процессов компьютера, зависшего на этапе установки обновлений/подготовки образа.
Идея заключается в том, что компьютер в данной фазе обслуживания образа доступен по сети. И хотя удаленный доступ к его рабочему столу через службы Remote Desktop (RDP) работать не будет, вы можете удаленно подключиться к нему с помощью инструментов удаленного администрирования.
Понадобится другой компьютер с Windows в этой же LAN. Проверьте, что компьютер, который завис на этапе «Подготовка Windows» доступен по сети и на нем открыт порт SMB (445)
Test-NetConnection 192.168.13.10 -port 445
Запустите оснастку Службы (Services)
services.msc
и удаленно подключитесь к зависшему серверу (Action -> Connect to another computer -> укажите имя или IP адрес проблемного сервера).
В списке служб сервера найдите службу Windows Modules Installer (Установщик модулей Windows). Часто бывает, что эта службу находится в состоянии Stopping. Очевидно, именно эта служба мешает выполнению процедуры корректной перезагрузки/выключению Windows.
Кнопки управления службой TrustedInstaller при этом не доступны. Вы не можете завершить или приостановить ее. В свойствах службы можно узнать имя исполняемого файла службы:
C:\Windows\servicing\TrustedInstaller.exe
.
Для принудительной остановки зависшей службы, нужно подключиться к командной строке удаленного компьютера. Для этого можно использовать утилиту PsExec. Откройте командную строку и выполните команду:
PsExec.exe \\192.168.158.10 -i -u localadmin powershell.exe
Где
-
192.168.158.10
– имя или IP адрес удаленного компьютера, к которому вы хотите подключиться -
localadmin
– учетная запись с правами администратора на удаленном компьютере (появится запрос пароля) - Если не указывать -u localadmin, будет выполнена попытка подключиться под текущим пользователем (удобно для доменной сети)
-
powershell.exe
– запустить сессию командной строки PowerShell
Проверим, чем занят компьютер. С помощью PowerShell выведем топ 10 процессов по использовании памяти:
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 Name, Id, @{Name="Memory (MB)"; Expression={[math]::round($_.WorkingSet / 1MB, 2)}}
И по использованию CPU:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, @{Name="CPU Time (s)"; Expression={[math]::round($_.CPU, 2)}}
Тут видно, что на хосте наблюдается высокое использование ресурсов процессом
TiWorker.exe
. Процесс TiWorker (Trusted Installer Worker), это ключевой процесс сервиса Windows Modules Installer (TrustedInstaller), который отвечает за обработку обновлений и системные компоненты Windows.
Проверьте, как долго запущен это процесс:
Get-Process TiWorker | Select-Object Id, Name, CPU, WorkingSet, StartTime
Проверьте какие службы Windows зависли и находятся в статусе Stopping:
Get-CimInstance -Class win32_service | where-Object state -eq 'stop pending'
Чтобы принудительно завершить службу TrustedInstaller и все связанные компоненты, выполните:
taskkill /IM TrustedInstaller.exe /F
pskill.exe \\corp-man02 TrustedInstaller.exe
Или (если нужно указать учетные данные пользователя для подключения):
taskkill.exe /s corp-man02 /u corp\admin_name /p P@ssw0rd! /im TrustedInstaller.exe
После этого на экране зависшего сервера должна появиться надпись Shutting down, и через несколько секунд он должен корректно перезагрузится.
Принудительное завершение процессов службы TrustedInstaller как правило не рекомендуется. Но если компьютер реально завис на этапе подготовки Windows на действительно длительное время, это будет оптимальный способ перезагрузить/выключить компьютер.
После загрузки Windows, обязательно проверьте целостность образа ОС и исправьте найденные ошибки с помощью DISM и SFC:
dism.exe /online /cleanup-image /restorehealth
sfc /scannow