powershell возвращает 1 отдельный элемент вместо массива

#arrays #powershell #powershell-3.0

#массивы #powershell #powershell-3.0

Вопрос:

Я следил за различными сообщениями в Интернете, чтобы исправить эту проблему, но мой код по-прежнему возвращает один элемент вместо массива. Мой код ниже:

 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. Как я могу сделать свой код более эффективным с точки зрения грамматики?

Спасибо

Ответ №1:

Используйте оператор запятой, чтобы обернуть ваш массив в другой массив, например:

 return ,$sessionVMSummary
 

Комментарии:

1. спасибо тебе, @KeithHill. Это вернет ArrayList, и мне нужен [Object] . Дело в том, что ConvertTo-JSON из ArrayList вернет только объект вместо массива … странно

2. Затем просто вызовите ToArray() ArrayList, например return ,($sessionVMSummary.ToArray())