在函数中向元素添加元素,但数组仍为空

时间:2013-09-10 13:04:03

标签: arrays function powershell powershell-v2.0

我确定这是一个愚蠢的问题,但我似乎无法在函数中向数组中添加元素。

PowerShell 2.0

$jobResult = @()

function Gather-JobResults {
    Param (
        [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
        [string] $message
    )
    begin {}
    process {
        $jobResult += ([string]::Format("{0} - {1}", (Get-Date -f "yyyy-MM-dd HH:mm:ss"), $message))
        Write-Host "--- Status jobResult ---> $jobResult"
    }
    end{}
}

Gather-JobResults("zabaaa")
Gather-JobResults("zaaaauuuuuuuul")
Gather-JobResults("winkoooo")

$jobResult

我拨打3x $jobResultGather-JobResults为空,我该如何解决此问题?

感谢您的回答

1 个答案:

答案 0 :(得分:4)

这是一个范围问题,当你在函数中修改$ jobResult时,你不会修改在这个函数之外定义的全局变量。

你的函数里面的

使用$global:jobResult += ...(或$ script:jobResult),它应该没问题

查看About_scope help page