带有空格和花括号的Powershell命令行参数?

5

我正在尝试编写我的第一个PowerShell脚本,但在运行以下代码时出现了错误。如何在PowerShell中传递参数给命令?

& "bcdedit" /store c:\boot\bcd /set {bootmgr} device partition=C:

编辑: 这段代码的有效版本如下:

& "bcdedit" /store c:\boot\bcd /set "{bootmgr}" device partition=C:

请问您能否提供具体的错误信息? - Angshuman Agarwal
指定了未知命令。运行“bcdedit /?”以获取命令行帮助。 - arynhard
搞定了。{bootmgr} 需要加上双引号。 - arynhard
2个回答

5
花括号搞乱了一切。在{bootmgr}周围加上引号可以解决问题。
& "bcdedit" /store c:\boot\bcd /set "{bootmgr}" device partition=C:

2
你遇到的问题是PowerShell解析器与cmd.exe解析器运作方式不同。解决方法之一是将命令传递给cmd.exe,并让它进行解析。
要实现这一点,请使用单引号将命令作为参数传递给cmd.exe,并使用/c选项。
cmd.exe /c 'bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:'

当你使用的命令需要带有字符串引号参数时,这种方法尤其有用。


这是一个非常好的解决方案,可以解决许多Powershell问题(特别是如果您已经投资于旧的命令行)。 - Froyke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接