Format-Table -Autosize
很棒,但与-GroupBy
一起使用时,列宽是按组而不是整个对象计算的。
我的想法是$tmp = $data | Format-Table -Autosize
,从$tmp
检索计算出的列宽度,建立一个哈希表,以其宽度描述列,然后$data | Sort-Object <column> | Format-Table $hash -GroupBy <column>
但是,尽管尝试了许多Google Format-Table
结果结构和$tmp | Get-Member
,但我找不到所需的信息。
你有什么线索吗?
答案 0 :(得分:0)
玩得开心。看起来列宽在某处:
ps terminal | format-table -autosize | select *
ClassId2e4f51ef21dd47e99d3c952918aff9cd : 033ecb2bc07a4d43b5ef94ed5a35d280
pageHeaderEntry :
pageFooterEntry :
autosizeInfo : Microsoft.PowerShell.Commands.Internal.Format.AutosizeInfo
shapeInfo : Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo
groupingEntry :
ClassId2e4f51ef21dd47e99d3c952918aff9cd : 9e210fe47d09416682b841769c78b8a3
shapeInfo :
groupingEntry :
ClassId2e4f51ef21dd47e99d3c952918aff9cd : 27c87ef9bbda4f709f6b4002fa4af63c
formatEntryInfo : Microsoft.PowerShell.Commands.Internal.Format.TableRowEntry
outOfBand : False
writeStream : None
ClassId2e4f51ef21dd47e99d3c952918aff9cd : 4ec4f0187cb04f4cb6973460dfe252df
groupingEntry :
ClassId2e4f51ef21dd47e99d3c952918aff9cd : cf522b78d86c486691226b40aa69e95c
groupingEntry :
$a = ps terminal | format-table -AutoSize
$a | foreach gettype
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
False False FormatStartData Microsoft.PowerShell.Commands.Internal.Format.StartData
False False GroupStartData Microsoft.PowerShell.Commands.Internal.Format.StartData
False False FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.PacketInfoData
False False GroupEndData Microsoft.PowerShell.Commands.Internal.Format.ControlInfoData
False False FormatEndData Microsoft.PowerShell.Commands.Internal.Format.ControlInfoData
嗯...我似乎已经死胡同了。
$a[0] | select -expand autosizeinfo
out-lineoutput : Unknown class Id a27f094f0eec4d64845801a4c06a32ae.
+ CategoryInfo : InvalidData: (Microsoft.PowerShel\u2026Format.AutosizeInfo:PSObject) [out-lineoutput], PSArgumentException
+ FullyQualifiedErrorId : FormatObjectDeserializerDeserializeInvalidClassId,Microsoft.PowerShell.Commands.OutLineOutputCommand