Запись BCD только для winpe. Подготовка к автоматическому восстановлению.
Я пытаюсь перезагрузить компьютер на флэш-накопитель, содержащий Windows PE, но каждый раз запускается только подготовка автоматического восстановления. Вот мой PowerShell, который генерирует новую запись BCD:
$drive = (get-location).Drive.Name + ":"
$output = bcdedit /copy '{current}' /d "automaticabd"
$variable = "{" + $output.Split('{')[-1]
$variable = $variable.TrimEnd('.')
"Attaching $variable to device partition $drive"
bcdedit /set $variable device partition=$drive
""
"Attaching $variable to osdevice partition $drive"
bcdedit /set $variable osdevice partition=$drive
""
"Setting $variable path to EFI: \EFI\Boot\bootx64.efi"
bcdedit /set $variable path \EFI\Boot\bootx64.efi
""
"Other settings..."
bcdedit /set $variable systemroot \windows
bcdedit /set $variable winpe yes
bcdedit /set $variable recoveryenabled No
bcdedit /bootsequence $variable
Все операции завершены успешно, и кажется, что запись верна, насколько мне известно:
Но когда я перезагружал компьютер, я получал сообщение "Восстановление автоматического восстановления", которое затем в конечном итоге переходило в среду восстановления Windows. С тех пор я добавил bcdedit /set $variable recoveryenabled No
, что делает невозможным вход в среду восстановления, но теперь я получаю другую ошибку:
Не удалось загрузить приложение или операционную систему, поскольку требуемый файл отсутствует или содержит ошибки.
Файл: \EFI\Boot\bootx64.efi Код ошибки: 0xc000007b
Но, если я войду в параметры загрузки и выберу этот файл вручную, он просто загрузится в winpe.
Я не совсем уверен, что происходит, любая помощь будет принята с благодарностью.
Как я могу исправить свой код, чтобы я мог успешно загрузиться в Windows PE на моей флешке?
1 ответ
Эта проблема может зависеть от того, что называется c: между моментом запуска PowerShell и моментом загрузки системы.
Вы можете попробовать это?
Загрузитесь с помощью USB-накопителя, откройте консоль и введите:
bcdedit / export C: \ SAVEDBCD
Я ожидаю, что C: в этом случае должен соответствовать вашему Pendrive, не так ли?
Затем перезагрузите компьютер как обычно, запустите скрипт powershell.
Вы должны заметить, что буква pendrive, которую вы получаете в $ drive, не является c: \, поскольку при запуске системы C: \ уже занят из раздела первичных окон жесткого диска.
Теперь сравните ранее сохраненный файл SAVEBCD с файлом, находящимся в c: \ boot \ bcd, вы должны сделать их равными, чтобы загрузка работала, поэтому скорее всего вам просто нужно начать код с:
$drive="c:"