- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我可以在 powershell 脚本中编写 bcd 命令,就像我在 cmd 提示符下一样,例如:
bcdedit /default '{current}'
bcdedit /default '{current}'
bcdedit /set '{otherboot}' description "my description"
bcdedit /default '{otherboot}'
bcdedit /set '{current}' description "my description"
$bcdStore=gwmi -name root\wmi -list bcdstore -enableall
$bcdStore|gm
$result=$bcdStore.OpenStore("") # can also use explicit file name.
$store=$result.Store
最佳答案
我不知道使用 WMI 的方法,但您可以使用 bcdedit
结合 Select-String
:
$otherboot = bcdedit /enum |
Select-String "path" -Context 2,0 |
ForEach-Object { $_.Context.PreContext[0] -replace '^identifier +' } |
Where-Object { $_ -ne "{current}" }
bcdedit /enum
的输出看起来大致是这样的:
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
...
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
...
Windows Boot Loader
-------------------
identifier {e0610d98-e116-11e1-8aa3-e57ee342122d}
device partition=C:
path \Windows\system32\winload.exe
description DebugEntry
locale en-US
...
Windows Boot Loader
部分,与
Windows Boot Manager
不同部分 - 有一个
path
记录。因此,我们可以使用此记录仅选择
Windows Boot Loader
部分:
Select-String "path"
identifier
记录是
path
之前的 2 行记录,我们需要两行
PreContext
(并且没有
PostContext
):
Select-String "path" -Context 2,0
bcdedit /enum
的输出中选择了以下两个块:
identifier {current}device partition=C:path \Windows\system32\winload.exe
identifier {e0610d98-e116-11e1-8aa3-e57ee342122d}device partition=C:path \Windows\system32\winload.exe
Since we're only interested in the first line of the PreContext
we select these 2 lines using a ForEach-Object
loop:
ForEach-Object { $_.Context.PreContext[0] }
identifier {current}
identifier {e0610d98-e116-11e1-8aa3-e57ee342122d}
from which we remove the category (identifier
) via string replacement:
ForEach-Object { $_.Context.PreContext[0] -replace '^identifier +' }
'^identifier +'
匹配以单词“identifier”开头的(子)字符串,后跟一个或多个空格,该字符串被替换为空字符串。在这个替换之后,两个块减少到这个:
{current}
{e0610d98-e116-11e1-8aa3-e57ee342122d}
So now we only need to filter out the chunk containing {current}
and what's left is the identifier of the other boot record:
Where-Object { $_ -ne "{current}" }
$otherboot
包含非当前引导记录的标识符。
关于powershell - bcdedit、bcdstore 和 powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903460/
我丢失了 ubuntu\winboot\wubildr.mbr 文件,该文件在引导顺序中不断出现。所以我以管理员身份运行终端并输入 bcdedit/delete 标识符(在实模式引导扇区下) 但它只是
我正在尝试在我的工作笔记本电脑上运行 Oracle Virtual Box。我收到一条错误消息,说它无法运行,因为我正在运行 Hyper-v。我正在尝试按照 Scott Hanselman's Blo
使用 ImageX 和 WIM 重建 HDD 后,BCD 有时会损坏。因此,我需要从在命令提示符下无人值守运行的脚本中重新构建 BCD。 手动输入时,以下代码可以完成工作。我需要帮助使其自动化(请参见
所以我可以在 powershell 脚本中编写 bcd 命令,就像我在 cmd 提示符下一样,例如: bcdedit /default '{current}' 但是我需要一个执行此操作的脚本: bcd
我不明白为什么以下代码在从 C 程序运行时返回“'bcdedit' 不是内部或外部命令”。 bcdedit 在 cmd 行上工作得很好。我怎样才能让它发挥作用? #include int main
当我尝试从我的 C# 应用程序运行 BCDEDIT 时,出现以下错误: 'bcdedit' is not recognized as an internal or external command,
我正在尝试设置内核调试,所以我正在使用命令: bcdedit /set debug on 不幸的是,我得到了回应 The parameter is incorrect. a) 有谁知道如何调试该错误吗
如何使用 bcdedit 添加新的 UEFI 固件启动菜单条目(在 NVRAM 中)。例如我尝试了以下步骤,但未添加启动项。 bcdedit /create /d "LinuxLoader" /app
从提升的命令提示符运行 bcdedit.exe 时,您可以看到当前 BCD 设置的值。我需要读取 hypervisorlaunchtype 的设置/值。 有谁知道这样做的方法吗? 我试图将管道输出写入
这是带有命令的 C++ 代码,命令用于在网络模式安全启动中运行 Windows 并重启,此代码仅在 32 位操作系统中运行,但在 64 位操作系统中只会重启,但不会在安全启动模式下发生。 [注意]:我
我正在阅读有关 Windows 内部结构的书籍和文章。我想在 Windows 7(32 位)机器的 WinDBG 中启动内核调试器。我尝试通过设置 bcdedit/debug/on 启用机器进行调试。
根据 MSDN 使用 LAN 启用内核调试(我正在使用适当的 LAN 板) ,我应该输入: bcdedit /dbgsettings NET HOSTIP:123.123.123.123 PORT:5
我是一名优秀的程序员,十分优秀!