我有一组具有属性的对象:
$col = @{....}
,数据是这样的:
id name items
--- ---- -----
01 a (a, b, c, d)
02 ....
项是字符串数组。如果我输出$ col的内容,则数据显示如上。有没有办法输出这样的值?
id name items
--- ---- -----
01 a a
b
c
d
02 b
03 c c1
04 d d1
d2
05 ...
更新后,items列可能包含空,一个或多个项目。
答案 0 :(得分:5)
首先,我设置一些近似于你的对象,用以下方法进行测试:
$col = @(
(New-Object –TypeName PSObject –Prop @{'id'='01';'name'='a';'items'=@(1,2,3)}),
(New-Object –TypeName PSObject –Prop @{'id'='02';'name'='b';'items'=@(1,2,3)}),
(New-Object –TypeName PSObject –Prop @{'id'='03';'name'='c';'items'=@(1,2,3)})
)
然后打印出来:
$col
name id items
---- -- -----
a 01 {1, 2, 3}
b 02 {1, 2, 3}
c 03 {1, 2, 3}
然后为'项目'定义自定义格式规则。 column,使用换行符将收集项连接在一起:
$itemFormat = @{Expression={($_.items -join "`n")};Label="Items";width=6}
然后使用-Wrap
打印带有Format-Table的集合,以允许它包装长行:
$col | Format-Table id,name,$itemFormat -Wrap -AutoSize
给出了:
id name Items
-- ---- ------
01 a 1
2
3
02 b 1
2
3
03 c 1
2
3