Вопрос или проблема
Как демонстрирует нижеуказанное:
Меню Пуск (Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy
) может инициировать перезагрузку без обновления ОС. Однако file:///%SYSTEMROOT%/system32/shutdown.exe
и команда Stop-Computer
в PowerShell (Core) не предоставляют возможности контролировать, решит ли Windows это сделать.
Мне нужна эта возможность, поскольку я использую двойную загрузку с Linux, что требует от меня выполнения этой рекомендации для обновления Windows:
Итак, решение, когда у вас двойная загрузка Linux/Windows с использованием стандартного DOS MBR и GRUB на разделе Linux, который установлен активным для выбора ОС, заключается в том, чтобы сделать активным раздел Windows перед перезагрузкой после установки обновлений Windows и вернуть его обратно на Linux после этого.
Поскольку я не всегда хочу автоматизировать этот процесс из-за изменения установленных ОС, я перезагружаюсь в Fedora 40 SSD через UEFI GUI моей материнской платы, который я вызываю программно: [1] [2]
#!/usr/bin/env pwsh
If ([OperatingSystem]::IsWindows() -Eq $True) {
sudo shutdown /r /fw /t 0
}
Тем не менее, как уже объяснялось, это может сломаться, когда необходимо применить обновление, из-за его неспособности указать, следует ли применять обновление. Следовательно, как я могу имитировать то, что делает Меню Пуск?
Ответ или решение
Программный перезагрузка Windows 11 без установки обновлений
Перезагрузка системы Windows 11 без установки обновлений может быть необходима в ситуациях, когда вы работаете в среде с двойной загрузкой, например, с Linux, и хотите избежать нежелательных действий системы по обновлению. В данной статье мы рассмотрим, как можно программно выполнить перезагрузку Windows 11 без установки обновлений.
Проблема с перезагрузкой
Управление перезагрузкой в Windows 11 зачастую не так просто, как может показаться. При использовании стандартных команд, таких как shutdown.exe
или PowerShell cmdlet Stop-Computer
, часто происходит незапланированное поведение, что может привести к установке обновлений. Это становится проблемой, когда вы хотите сохранить контроль над процессом загрузки, особенно при двойной загрузке с Linux.
Имитирование поведения меню «Пуск»
Ошибки, связанные с установкой обновлений, можно избежать, имитируя поведение, предоставляемое приложением меню «Пуск», которое позволяет перезначить перезагрузку без обновлений. Мы можем использовать интеграцию с COM-объектами Windows для достижения этой цели.
Вот пример сценария PowerShell, который выполняет перезагрузку без установки обновлений:
Add-Type -AssemblyName System.Windows.Forms
$wshell = New-Object -ComObject wscript.shell
$wshell.Popup("Система будет перезагружена.", 0, "Перезагрузка", 0x1)
Stop-Computer -Force
Использование командной строки
Вы также можете задействовать встроенные команды Windows, чтобы выполнить перезагрузку без применения обновлений. Для этого вы можете использовать следующую команду:
shutdown /r /t 0
Однако важно понимать, что эта команда, в зависимости от настроек политики обновлений системы, может все же вызвать установку обновлений перед перезагрузкой. Чтобы избежать этого, необходимо предварительно настроить параметры обновлений в разделе «Параметры» > «Обновление и безопасность» > «Центр обновления Windows».
Скрипт для сложной настройки
Если вам нужно программно перезагрузить Windows 11 так, чтобы гарантированно не произошла установка обновлений, можно написать более сложный скрипт с помощью PowerShell:
$updateSession = New-Object -ComObject Microsoft.Update.Session
$updateSearcher = $updateSession.CreateUpdateSearcher()
$availableUpdates = $updateSearcher.Search("IsInstalled=0")
if ($availableUpdates.Updates.Count -eq 0) {
Write-Host "Обновления не найдены. Выполняется перезагрузка..."
Restart-Computer -Force
} else {
Write-Host "Обновления доступны. Перезагрузка отменяется."
}
Этот скрипт проверяет наличие доступных обновлений и перезагружает систему только в том случае, если обновлений нет.
Заключение
Программная перезагрузка Windows 11 без установки обновлений требует определенной подготовки и понимания работы системы обновлений Windows. С помощью вышеописанных методов вы можете сохранять контроль над процессом перезагрузки в конфигурациях с двойной загрузкой, предотвращая нежелательные установки обновлений при каждом перезапуске.
Эти методы помогут вам достичь желаемого результата, а также обеспечат улучшенный опыт работы при взаимодействии с многими операционными системами.