首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell & bcdedit:标识恢复分区

Powershell & bcdedit:标识恢复分区
EN

Stack Overflow用户
提问于 2017-08-29 12:51:45
回答 2查看 2.1K关注 0票数 0

我试图脚本消除/备份OEM分区(这只是使系统回到一个过时的版本,没有实际用途)。

在许多系统上,使用DISKPART list partition会返回更多的recovery类型分区:一个是官方的Microsoft分区(WinRE),另一个来自OEM。

第一步是安全地识别WinRE分区的位置。我在bcdedit或PS中没有找到任何直路,只找到:

代码语言:javascript
复制
$renv=(bcdedit /enum "{default}" | Select-String "^recoverysequence" | Out-String | Select-String "{.+}").Matches.Value
(bcdedit /enum $renv | Select-String "^device" | Out-String | Select-String "\[.+\]").Matches.Value

这将返回如下所示的字符串:

代码语言:javascript
复制
[\Device\HarddiskVolume1]

其中卷号是要在Diskpart中使用的分区。(剩余的恢复分区和OEM类型的分区可以备份)。

这是标识WinRE分区的正确过程吗?

还有更直接和/或更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 19:58:46

有一个名为ReagentC的命令行工具,它位于路径中,因此您可以从任何管理命令提示符中调用它。

代码语言:javascript
复制
reagentc /info

...will产生的一些输出如下:

代码语言:javascript
复制
Windows RE status:         Enabled
Windows RE location:       \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
Boot Configuration Data (BCD) identifier: 496c58c4-71cb-11e9-af8f-001c42903d2e
Recovery image location:   
Recovery image index:      0
Custom image location:     
Custom image index:        0

此外,如果您正在编写代码来完成这项工作,则可以通过调用winapi函数来完成该工作来发现恢复分区。对于call...but来说,它是一个非常复杂的api,无论它的价值是什么,它都是带有IOCTL_DISK_GET_PARTITION_INFO_EX控制代码的DeviceIOControl。如果您没有使用C或某种定义联合的语言,这是一种痛苦。返回的结构取决于磁盘是GPT格式还是MBR格式。

如果磁盘是MBR,则返回的分区类型为0x27,如果是GPT驱动器,分区类型将是guid:de94bba4-06d1-4d40-a16a-bfd50179d6ac

票数 1
EN

Stack Overflow用户

发布于 2017-08-29 14:03:28

除了使用查找-RE精简选择字符串之外

我看没有比ATM机更好的办法了。

代码语言:javascript
复制
$renv=(bcdedit /enum "{default}" | Select-String "(?<=^recoverysequence\s+)({.+})").Matches.Value
(bcdedit /enum $renv | Select-String "(?<=^device.+)\[.+\]").Matches.Value
[\Device\HarddiskVolume5]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45939687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档