为什么要忽略这些论点?执行命令($ re)但显然没有提供任何参数。
$re = "C:\Program Files (x86)\Y\RM 2010\RM.exe"
$arg1 = ' /W:"cross"'
$arg2 = ' /P:"C:\Users\P\Documents\RM\RM.rep"'
$arg3 = ' /U /S'
& $re $arg1 $arg2 $arg3
答案 0 :(得分:0)
试试这个
$re = "C:\Program Files (x86)\Y\RM 2010\RM.exe" $arg1 = '/W:\"cross\"' $arg2 = '/P:\"C:\Users\P\Documents\RM\RM.rep\"' $arg3 = '/U' $arg4 = '/S' & $re $arg1 $arg2 $arg3 $arg4
获取arg1&中包含的"
标记arg2,他们必须被转义\"
。
不知道参数的前导空格是否可能与RM.EXE混淆,但不应该要求它们。
另外,我将/U /S
分开,因为它们看起来像是单独的参数。
通过ECHOARGS.EXE运行上述内容后,输出如下:
Arg 0 is </W:"cross">
Arg 1 is </P:"C:\Users\P\Documents\RM\RM.rep">
Arg 2 is </U>
Arg 3 is </S>
Command line:
"H:\temp\EchoArgs.exe" /W:\"cross\" /P:\"C:\Users\P\Documents\RM\RM.rep\" /U /S
最后,如果您正在运行PowerShell 3(根据标记),您应该能够使用--%
。这将强制PowerShell发送命令行的其余部分&#39; as-is&#39;。 e.g。
& $re --% /W:"cross" /P:"C:\Users\P\Documents\RM\RM.rep" /U /S
仍然可以使用以下形式在PS 1或2中执行:
& $re /W:\`"cross\`" /P:\`"C:\Users\P\Documents\RM\RM.rep\`" /U /S