powershell,从以前的Format-Table释放列宽-Autosize

时间:2019-05-12 16:48:05

标签: powershell

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,但我找不到所需的信息。

你有什么线索吗?

1 个答案:

答案 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