如果我以相反的顺序排序,为什么PowerShell表中的列会消失?

Oma*_*ena 5 powershell

我想生成一个按CPU总时间排序的进程名称和总CPU时间表.以下按预期工作:

ps | sort -p cpu | select processname,cpu
Run Code Online (Sandbox Code Playgroud)

但如果我按如下方式反转排序方向,则CPU时间列会消失:

ps | sort -descending -p cpu | select processname,cpu
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

似乎CPU属性有时是Double,有时是null.当我运行第一个命令时,第一个项目具有空CPU并且显示列:对于第二个命令,第一个项目具有双值CPU并且不显示该列.

当列未显示时,它仍然存在!使用Format-List,显示它,例如:

ps | sort -descending -p cpu | select processname,cpu | fl
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

Dou*_*nke 6

试试这个

ps | sort -descending -p cpu | select processname,cpu | Format-Table -AutoSize
Run Code Online (Sandbox Code Playgroud)

  • 原因是PowerShell中的格式(特别是自动格式化)受输出中第一个对象的强烈影响.在您的第一个示例中,您有两列,因此它们各自获得一半的屏幕.第一个CPU值为$ null,因此该列被视为字符串.在第二个示例中,第一个CPU值是一个数字,因此整个列被视为数字并且右对齐(将所有内容都推到屏幕的右边缘).确保缓冲区宽度与窗口宽度相同.:) (2认同)