2017-03-15 20 views
0

我有以下腳本傳遞字符串參數從詹金斯一個數組的PowerShell

function dummy 
{ 
    param([string[]] myArray) 
    myArray | foreach { 
     #do something with $_ 
    } 
} 

從PowerShell的,如果我這樣做,一切都很好 。 ./myscript.ps1 假人VAL1',「值2」

,但我不能得到這個從詹金斯與我已經定義

. ./myscript.ps1 
dummy $env:myglobal 

一個全局變量在哪裏工作$ ENV:myglobal =' VAL1' ,‘val2的’這似乎是通過以下

dummy "'val1','val2'" 

和虛設把它當作單個字符串而不是字符串數組

+0

我也試過虛擬@($ ENV:myglobal) – BigUnit5150

回答

0

我可能是簡單化了,但基本上環境變量只是字符串(即不是數組!)。

您需要做的是使用-split

function dummy { 
    Param (
     [string[]] 
     $myArray 
    ) 

    Process { 
     [array]$anotherArray = $myArray -split "," 
     $anotherArray| ForEach-Object { 
      #do something with $_ 
     } 
    } 
} 
+0

我會用周圍的工作;不幸的是,這個問題沒有真正的解決方案。從命令行傳遞時,它也傳遞一個字符串 – BigUnit5150

+0

你是如何從命令行傳遞的? – gvee

+0

虛擬'val1','val2'從命令行傳遞時起作用。當它從詹金斯傳遞時,它將該值視爲「'val1','val2'」請注意額外的引號。這導致powershell將輸入視爲字符串常量,而不是兩個字符串 – BigUnit5150

相關問題