想知道如何将数组作为命令行参数传递给PowerShell中的exe文件?以下是我目前正在进行的工作
我使用以下格式的powershell函数调用exe文件
$firstParam = "test1"
$secondParam = "test2"
$thirdParam = @()
$thirdParam = 'test3'
$thirdParam = $thirdParam + 'test4'
[void](& '..\SomeApp.exe' "$firstParam" "$secondParam" "$thirdParam"
以下是我在Application.exe中看到的输入参数
从powershell传递的第三个输入参数是一个数组,但在传递给exe文件时它被连接(空格分隔)。
是否可以将“test3”作为第三个参数传递,将“test4”作为第四个参数传递?
答案 0 :(得分:1)
$thirdParam
不能是您的实现的数组。当您编写$thirdParam = @()
时,您确实声明了一个空数组,但随后又将其重新分配给字符串:$thirdParam = 'test3'
,然后再分配给另一个字符串$thirdParam = $thirdParam + 'test4'
。我仍然不清楚你原来的意图,但是这里你将如何将test3
作为第三个参数传递,将test4
作为第四个参数:
$fourthParam = 'test4'
[void](& '..\SomeApp.exe' "$firstParam" "$secondParam" "$thirdParam" "$fourthParam"
如果您只有2个固定参数,并且可以有N个参数,请切换到Invoke-Expression
而不是Invoke-Command
:
[void](Invoke-Expression "..\SomeApp.exe $firstParam $secondParam $thirdParam"
并确保正确引用您的参数。在这种情况下,如果$ thirdParam包含空格,它将确定您的参数#4及以后。