我们在使用Format-Table去显示输出信息的时候,通常会发现如果某个属性字段比较长,则无法正常全部显示,如下。
PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path -AutoSize
Company Name Id Path
------- ---- -- ----
Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...
这里面涉及到一个很重要的细节是,Format-Table 命令假定属性距离属性列表的开头越近,则该属性越重要。 因此,它会尝试完整显示离列表开头最近的那些属性。 如果 Format-Table 命令无法显示所有属性,它将从显示中删除某些列,并发出警告。如果你使名称变成列表中的最后一个属性,便可以看到这一行为:
PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name -AutoSize
WARNING: column "Name" does not fit into the display and was removed.
Company Path I
d
------- ---- -
Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6
你还可以通过使用 Wrap 参数让较长的 Format-Table 数据在其显示列中自动换行。 仅使用 Wrap 参数不一定会实现所需的操作,因为如果你不同时指定 AutoSize,它会使用默认设置:
PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company,Path
Name Id Company Path
---- -- ------- ----
powershell 2836 Microsoft Corporati C:\Program Files\Wi
on ndows PowerShell\v1.0\powershell.exe
使用 Wrap 参数的一个优点是基本不会减慢进程速度。 如果你对大型目录系统执行递归文件列表,那么如果你使用 AutoSize,可能得耗用大量时间和内存,才能显示第一批输出项。
如果你并不关心系统负载,那么结合使用 AutoSize 和 Wrap 参数则会获得良好的效果。
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,Id,Company,Path
Name Id Company Path
---- -- ------- ----
powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\
powershell.exe
如果你先指定最宽的列,则某些列可能无法显示,因此最安全的做法是先指定最小的数据元素。在下面的示例中,我们首先指定特别宽的路径元素,甚至使用自动换行,但仍丢失了最后的名称列:
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,Id,Company,Name
WARNING: column "Name" does not fit into the display and was removed.
Path Id Company
---- -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporation