2011-06-27 35 views
4

我想生成一个进程名称和总CPU时间表,按CPU总时间排序。下面按预期工作:如果按相反顺序排序,PowerShell表中的列为什么会消失?

ps | sort -p cpu | select processname,cpu 

但如果我反向排序如下的方向,CPU时间列消失:

ps | sort -descending -p cpu | select processname,cpu 

这是为什么?

看来,CPU属性有时是双重的,有时为空。当我运行第一个命令时,第一个项目具有空的CPU,并且显示列:对于第二个命令,第一个项目具有双值CPU,并且该列不显示。

当列未显示时,它仍然存在!使用格式列表显示它,例如:

ps | sort -descending -p cpu | select processname,cpu | fl 

这是怎么回事?

回答

5

尝试此

ps | sort -descending -p cpu | select processname,cpu | Format-Table -AutoSize 
+0

那么,添加AutoSize选项肯定会显示额外的列,但我想了解为什么,如果没有该选项,它不会显示为-descendind,并显示为通常的升序排列。 –

+1

@Omar,它真的不适合你吗?当我在ISE中运行它时,格式会发生变化,但如果我在输出窗格中向右滚动,则会看到该列。 – Rynant

+0

@Rynant:哦,我明白你的意思了:该列可能超出了窗口的可见部分,并自动修复了这个问题。我甚至没有想到这一点。我会再次检查一次我的Windows机器。谢谢! –

0

在结果集中的第一个对象的属性确定要显示的列。任何强制列返回到第一个返回结果的答案都会显示所有返回结果的列。

+0

这仍然不能解释行为,我认为:所有对象都具有ProcessName和CPU属性;当第一个对象具有空CPU时,CPU列会显示,但是当第一个对象具有双值CPU属性时,该列不会显示。这很奇怪,对吧? –

相关问题