Запись 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:"
Другие вопросы по тегам