我们在使用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 ```