winpe的BCD条目仅启动准备自动修复

时间:2018-05-31 17:22:50

标签: powershell winpe bcdedit

我正在尝试将计算机重新启动到包含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 :(得分:-1)

在运行powershell的那一刻和系统启动的那一刻之间,这个问题可能取决于所谓的c的不同角度。

你能试试吗?

使用USB驱动器启动打开控制台并键入:

bcdedit / export C:\ SAVEDBCD

我希望C:在这种情况下应该与你的pendrive相对应,不是吗?

然后正常重启,执行你的powershell脚本。

你应该注意到你在$ drive中获得的pendrive信件不是c:\因为当系统启动时C:\已经从硬盘主Windows分区占用了。

现在将之前保存的SAVEBCD文件与c:\ boot \ bcd中存在的SAVEBCD文件进行比较,你应该使它们相等以使启动工作,所以你可能需要用以下代码启动你的代码:

$drive="c:"