gpt4 book ai didi

powershell - 如何在循环中显示pscustomobject?

转载 作者:行者123 更新时间:2023-12-02 23:07:05 25 4
gpt4 key购买 nike

我有以下pscutomobject

$output = [PSCustomObject]@{
'#' = ''
'Report Path' = ''
'Schedule ID' = ''
Status = ''
}

我有一个foreach循环,我将每次迭代的值添加到pscustomobject中
foreach ($refreshSchedulePlanId in $reportRefreshScheduleSubscriptionIdDataWithoutHeader)
{
$output.'#' = $iteration
$output.'Report Path' = $($reportRefreshScheduleSubscriptionIdDataWithoutHeader[$loopCount])
$output.'Schedule ID' = $refreshSchedulePlanId
$output.Status = $status

$output | ft
}

但其输出方式如下:
# Report Path Schedule ID Status
1 report1/rep1 0998989898 success

# Report Path Schedule ID Status
2 report2/re2 76767868767 fail

它应该输出:
# Report Path Schedule ID Status
1 report1/rep1 0998989898 success
2 report2/re2 76767868767 fail

等等..

最佳答案

通过在循环中使用ft( Format-Table ),每个自定义对象都会立即进行单独格式化,并每次打印为一个完整的表-带有标题。

立即修复是将ft调用移出循环,并将其应用于整个循环:

& { 
foreach ($refreshSchedulePlanId in $reportRefreshScheduleSubscriptionIdDataWithoutHeader)
{
$output.'#' = $iteration
$output.'Report Path' = $($reportRefreshScheduleSubscriptionIdDataWithoutHeader[$loopCount])
$output.'Schedule ID' = $refreshSchedulePlanId
$output.Status = $status

$output
}
} | ft

注意:由于 foreach循环是一条语句,因此不能在管道中按原样使用,因此被包装在用 { ... }call operator调用的脚本块( &)中。

但是,由于 [pscustomobject]实例只有4个属性,因此根本不需要 ft( Format-Table,因为PowerShell默认情况下使用具有4个或更少属性的自定义对象的表格式。

不使用 Format-* cmdlet的另一个好处是,鉴于 Format-* cmdlet仅对显示格式有用,鉴于它们返回的对象是PowerShell的输出格式系统的格式指令,因此该输出仍适用于进一步的编程处理-请参阅 this answer

关于powershell - 如何在循环中显示pscustomobject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60750688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com