- 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/
所以我可以在 powershell 脚本中编写 bcd 命令,就像我在 cmd 提示符下一样,例如: bcdedit /default '{current}' 但是我需要一个执行此操作的脚本: bcd
我正在尝试将此代码片段转换为 Delphi,但我陷入了for every objWBL in colObjects。 if not objBcdStore.EnumerateObjects( &h10
我们使用以下函数来获取当前启动配置指定的处理器数量。此编号仅用于记录日志。 下面的函数在 XP、Vista、7、2003 和 2008 上运行良好。但是,它在 Windows 2012 Server
我是一名优秀的程序员,十分优秀!