从powershell.exe命令调用程序并操作参数

时间:2017-12-06 15:15:18

标签: powershell

我正在尝试调用一个接受PowerShell命令行参数的EXE文件程序。我需要发送的参数之一是基于参数的字符串长度。

例如,

app.exe /param1:"SampleParam" /paramLen:"SampleParam".length

当我运行上述内容时,或者例如:

notepad.exe "SampleParam".length

记事本按预期打开,值为11。

我想从cmd / task scheduler调用PowerShell时获得相同的结果。

例如,

powershell notepad.exe "SampleParam".length

但是当我这样做时,我得到"SampleParam".length字面而不是"SampleParam".length计算值。

预期结果是:

  

运行notepad.exe 11

2 个答案:

答案 0 :(得分:1)

我建议使用变量来存储你的字符串等。

$Arg1 = 'SampleParam'
## This will try to open a file named 11.txt
powershell notepad.exe $Arg1.Length

在您的具体示例中:

app.exe /param1:$Arg1 /paramLen:$Arg1.Length

利用splatting:

## Array literal for splatting
$AppArgs = @(
    "/param1:$Arg1"
    "/paramLen:$($Arg1.Length)"
)
app.exe @AppArgs

答案 1 :(得分:1)

使用powershell.exe的-Command参数:

powershell -Command "notepad.exe 'SampleParam'.length"

小心使用""因为它们可以被Windows命令处理器接收。这也有效:

powershell -Command notepad.exe 'SampleParam'.length

但这不会:

powershell -Command notepad.exe "SampleParam".length