我想使用 PowerShell 来自动化 diskpart.exe,但 PowerShell 构建的脚本参数被视为无效。例如,下面的简单的 diskpart 脚本按预期工作:
$diskDetailsDPCom=@(
"select disk 0",
"detail disk",
"exit"
)
$diskDetailsDPCom | diskpart
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过连接变量或文字“0”来构建“select disk”命令时,diskpart 失败并显示The arguments specified for this command are not valid.:
$diskDetailsDPCom=@(
"select disk " + "0",
"detail disk",
"exit"
)
$diskDetailsDPCom | diskpart
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,我该如何继续?
在 PowerShell 中,逗号 ( ,) 运算符的优先级高于串联 ( +) 运算符。您的两个代码块的评估方式不同。
@("select disk 0", “detail disk”, “exit”)
Run Code Online (Sandbox Code Playgroud)
如您所料,计算结果为包含三个字符串的数组。但是,您的第二个示例实际上解析为
@("select disk " + (“0”, “detail disk”, “exit”))
Run Code Online (Sandbox Code Playgroud)
为了进行连接,PowerShell 使用-join运算符将数组转换为字符串,您的结果是"select disk 0 detail disk exit"包含在数组中的字符串。
要获得您想要的数组,请在连接前后加上括号。
@(
("select disk " + “0”),
“detail disk”,
“exit”
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |