因此,我可以在powershell脚本中编写bcd命令,就像在cmd提示符中一样,例如:
bcdedit /default '{current}'
然而,我需要一个脚本,这样做:
bcdedit /default '{current}'
bcdedit /set '{otherboot}' description "my description"
如果它不这样做,它就会反过来:
bcdedit /default '{otherboot}'
bcdedit /set '{current}' description "my description"
我需要做的是在Powershell中找到另一个 Boot 的标识符,我不确定如何找到。所有谷歌搜索都说要这样做:
$bcdStore=gwmi -name root\wmi -list bcdstore -enableall
$bcdStore|gm
$result=$bcdStore.OpenStore("") # can also use explicit file name.
$store=$result.Store
但是我不知道一旦我有了商店怎么用,这似乎有点太复杂了。我的意思是应该有一个更简单的方法...不是吗?
4条答案
按热度按时间yzxexxkh1#
我不知道用WMI做这件事的方法,但是您可以将
bcdedit
与Select-String
结合使用:bcdedit /enum
的输出大致如下所示:此输出的相关部分是
Windows Boot Loader
部分,与Windows Boot Manager
部分不同,它有一个path
记录。因此,我们可以使用此记录仅选择Windows Boot Loader
部分:由于
identifier
记录比path
记录早2行,因此我们需要2行PreContext
(不需要PostContext
):现在,我们从
bcdedit /enum
的输出中选择了以下两个块:由于我们只对
PreContext
的第一行感兴趣,因此使用ForEach-Object
循环选择这两行:这就把两个块简化为:
我们通过字符串替换移除类别(
identifier
):正则表达式
'^identifier +'
匹配以单词"identifier"开头的(子)字符串,后面跟一个或多个空格,然后替换为空字符串。替换后,两个块将缩减为:所以现在我们只需要过滤掉包含
{current}
的块,剩下的是另一个引导记录的标识符:此后,变量
$otherboot
包含非当前引导记录的标识符。jtjikinw2#
团队!
我正在写BCDEdit解析器.我想它会很有用.
7uhlpewt3#
我知道这不是一个完整的答案,但它可能足以让您开始。下面的代码输出BCD知道的所有操作系统的显示名称。
mrphzbgm4#
我的解决方案
它无法处理语言等
但英语系统...
没有问题