2012-10-17 48 views
0

想知道如何將數組作爲命令行參數傳遞給PowerShell中的exe文件?這就是我目前的工作Powershell - 將數組作爲參數傳遞給從命令行調用的可執行文件

我打電話從一個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

請注意,將所有參數放入數組也可以;例如'$ appArgs = @($ firstParam,$ secondParam); $ appArgs + = $ thirdParam; $ appArgs + = $ fourthParam; [void](&'.. \ SomeApp.exe'$ appArgs)'。另見[§2.2](http://stackoverflow.com/a/8468690/2495)。 –

回答

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及以後。

+0

嗨Neolisk - 感謝您的輸入!我的問題是,我只知道前兩個參數存在於前面,而第三個參數前面是動態的。我需要容納以下場景 參數通過 - test1,test2,test3,test4 - test1,test2,test3,test4,test5 – infinity

+0

@iNfinity:我更新了答案,請看看。 – Neolisk

相關問題