我正在尝试调用一个接受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
答案 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