【问题标题】:powershell returning 1 single element instead of arraypowershell 返回 1 个单个元素而不是数组
【发布时间】:2014-06-28 01:50:09
【问题描述】:

我已经在网上关注了不同的帖子来解决这个问题,但我的代码仍然返回一个数组 insteaf 的单个元素。我的代码如下:

Add-PSSnapin -Name VeeamPSSnapIn -WarningAction SilentlyContinue
    $sessionVMSummary = @()
    $bkJobs = get-vbrjob | foreach {
        $session = $_.findlastsession()
        if (($session -ne $NULL) -and ($_.isScheduleEnabled -eq $TRUE)) {
            # Get session details
            $sessionDocument = New-Object PSObject -Property @{
                "Name" = $session.JobName
                "Result" = $session.Result.toString()
                "ObjectStatus" = @()
            }
            [Veeam.Backup.Core.CBackupTaskSession]::GetByJobSession($session.id) | foreach {
                $Info = New-Object PSObject -Property @{
                    "Start Time" = $_.Progress.StartTime
                    "End Time" = $_.Progress.StopTime
                    "Duration" = $_.Progress.Duration
                }
                $sessionDocument.ObjectStatus += $Info
            }
            $sessionVMSummary += $sessionDocument
        }
    }

    return $sessionVMSummary

问题 1:如何让 $sessionVMSummary 返回一个包含 1 个元素的数组? 问题 2:从语法的角度来看,如何让我的代码更高效?

谢谢

【问题讨论】:

    标签: arrays powershell powershell-3.0


    【解决方案1】:

    使用逗号运算符将您的数组包装在另一个数组中,例如:

    return ,$sessionVMSummary
    

    【讨论】:

    • 谢谢@KeithHill。这将返回一个 ArrayList,我需要 [Object]。事情是 ArrayList 的 ConvertTo-JSON 只会返回一个对象而不是一个数组......奇怪
    • 然后只需在 ArrayList 上调用 ToArray(),例如return ,($sessionVMSummary.ToArray())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2021-10-04
    • 2014-06-27
    • 2020-12-28
    • 1970-01-01
    • 2022-01-12
    • 2020-08-22
    相关资源
    最近更新 更多