如何将字符串数组传递给ps1文件?

问题描述:

我正在使用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"); 

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"