Используя ft
(Format-Table
) внутри l oop, каждый пользовательский объект форматируется мгновенно, индивидуально, печатаясь как полная таблица - с заголовком - каждый раз.
Исправление немедленное состоит в том, чтобы переместить вызов ft
из l oop и применить его ко всему l oop:
& {
foreach ($refreshSchedulePlanId in $reportRefreshScheduleSubscriptionIdDataWithoutHeader)
{
$output.'#' = $iteration
$output.'Report Path' = $($reportRefreshScheduleSubscriptionIdDataWithoutHeader[$loopCount])
$output.'Schedule ID' = $refreshSchedulePlanId
$output.Status = $status
$output
}
} | ft
Примечание. Поскольку foreach
l oop является оператором , его нельзя использовать как есть в конвейере, и поэтому он заключен в блок скрипта ({ ... }
) вызывается с помощью &
, оператор вызова .
Однако, поскольку ваши [pscustomobject]
экземпляры имеют только 4 свойств, вам не нужно ft
( Format-Table
вообще, потому что PowerShell по умолчанию использует форматирование таблиц с пользовательскими объектами, которые имеют 4 или менее свойств.
Отсутствие командлета Format-*
имеет дополнительное преимущество, так как вывод остается подходит для дальнейших программ c обработки , учитывая, что Format-*
командлеты полезны только для форматов отображения tting , учитывая, что возвращаемые ими объекты инструкции по форматированию для системы форматирования вывода PowerShell - см. этот ответ .