2011-06-27 3 views
4

プロセス名と合計CPU時間を合計CPU時間でソートしたテーブルを作成したいとします。予想通り、次の作品:逆の順序でソートすると、PowerShellテーブルの列が消えるのはなぜですか?

ps | sort -p cpu | select processname,cpu 

しかし、私は次のようにソートの方向を逆にすると、CPU時間の列が消える:

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

をなぜこれがありますか?

CPUプロパティがDoubleとnullの場合があります。最初のコマンドを実行すると、最初の項目にはnull CPUがあり、その列は表示されます.2番目のコマンドの場合、最初の項目には2重のCPUがあり、列は表示されません。

カラムが表示されない場合、まだ存在します! Format-Listを使用すると、次のように表示されます。

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列にはDOESが表示されますが、最初のオブジェクトにダブル値のCPUプロパティがある場合、その列は表示されません。それは不思議ですよね? –

関連する問題