2017-08-23 103 views
2

我正在使用Jenkins管道作業。我的要求是獲取作業的所有提交消息,並將其傳遞給Jenkins管道文件中的.ps1文件,然後從.ps1文件傳遞給cake文件。如何將字符串數組傳遞給ps1文件?

我正在使用字符串列表來獲取所有提交消息,然後將其轉換爲數組。

現在,我需要將這個數組值傳遞給Jenkins管道文件中的ps1文件。 我試圖像詹金斯管道文件中的字符串那樣傳遞。它引發一個異常。任何人都可以讓我知道是否可以將數組值傳遞給詹金斯文件中的.ps1文件?

詹金斯文件內容:

bat 'powershell.exe -ExecutionPolicy ByPass -File build.ps1 -Script build.cake -Target build -arrayContent '+"${arrayContent}" 

PS1文件內容:

Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" arrayContent=`"$arrayContent`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs" 

我聲明瞭數組作爲名爲.ps1文件[string[]]$arrayContent = @()

蛋糕文件內容:

var arrayContent = Argument<string[]>("arrayContent"); 

回答

3

PowerShell的陣列不PowerShell的外面工作。你可以通過值作爲一個分隔符分隔字符串,字符串分隔PowerShell腳本:

Param(
    [Parameter(Mandatory=$true)] 
    [string]$ArrayContent, 
    ... 
) 

$stringArray = $ArrayContent -split ',' 
... 
powershell.exe ... -ArrayContent "foo,bar,baz" 

或者通過每個字符串作爲一個單獨的未命名的說法,讓他們在自動變量收集$args

[CmdletBinding()] 
Param(
    ... 
) 

$stringArray = $args 
... 
powershell.exe ... "foo" "bar" "baz" 
相關問題