#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())