Запись BCD только для winpe. Подготовка к автоматическому восстановлению. - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь перезагрузить компьютер на флэш-накопитель, содержащий 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

Все операции выполнены успешно, и кажется, что запись верна, насколько мне известно:

enter image description here

Но, когда я перезагружал компьютер, я получал сообщение «Восстановление автоматического восстановления», которое затем в конечном итоге переходило в среду восстановления Windows.С тех пор я добавил bcdedit /set $variable recoveryenabled No, что делает его невозможным для перехода в среду восстановления, но теперь я получаю другую ошибку:

Приложение или операционная система не могут быть загружены, посколькунеобходимый файл отсутствует или содержит ошибки.

Файл: \ EFI \ Boot \ bootx64.efi Код ошибки: 0xc000007b

Но если я войду в параметры загрузки и выберу этот файл вручную, он просто загружается в winpe.

Я не совсем уверен, что происходит, любая помощь будет принята с благодарностью.

Как я могу исправить свой код, чтобы я мог успешно загрузиться вWindows PE на моей флешке?

1 Ответ

0 голосов
/ 07 июня 2018

Эта проблема может зависеть от того, что называется c: между моментом запуска powershell и моментом загрузки системы.

Можете ли вы попробовать это?

Загрузитесь с помощью USB-накопителя, откройте консоль и введите:

bcdedit / export C: \ SAVEDBCD

Я ожидаю, что C: в этом случае должно соответствовать вашему pendrive, isn 'не так ли?

Затем выполните обычную перезагрузку, запустите сценарий powershell.

Вы должны заметить, что буква pendrive, которую вы получаете в $ drive, не является c: \, поскольку при запуске системы C: \уже занят на главном разделе Windows жесткого диска.

Теперь сравните ранее сохраненный файл SAVEBCD с файлом, находящимся в c: \ boot \ bcd, вы должны сделать его равным, чтобы загрузка работала, поэтомускорее всего, вам просто нужно начать код с:

$drive="c:"
...