在PowerShell中使用参数运行exe

时间:2014-03-23 17:40:41

标签: powershell-v3.0

为什么要忽略这些论点?执行命令($ 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

1 个答案:

答案 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