Powershell - 将数组作为参数传递给从命令行调用的可执行文件

时间:2012-10-17 23:35:23

标签: powershell arguments pipeline

想知道如何将数组作为命令行参数传递给PowerShell中的exe文件?以下是我目前正在进行的工作

我使用以下格式的powershell函数调用exe文件

$firstParam = "test1"
$secondParam = "test2"

$thirdParam = @()
$thirdParam = 'test3'
$thirdParam = $thirdParam + 'test4'

[void](& '..\SomeApp.exe' "$firstParam" "$secondParam" "$thirdParam"

以下是我在Application.exe中看到的输入参数

Debugging information in the application 从powershell传递的第三个输入参数是一个数组,但在传递给exe文件时它被连接(空格分隔)。

是否可以将“test3”作为第三个参数传递,将“test4”作为第四个参数传递?

1 个答案:

答案 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及以后。