2016-07-16 19 views
2

プロセスのカーネルモード時間とユーザーモード時間を追加することで、CPU時間のあるシステムでほとんどのメモリを消費する10個のプロセスを表示しようとしています。それは何も示していない。表示プロセスでCPU時間を消費するメモリ

Get-WmiObject Win32_Process -ComputerName XXXXX | 
    Sort-Object WorkingSetSize -Descending | 
    Select-Object -First 10 | 
    Format-Table -AutoSize Name, ProcessID, 
     @{Label = "Consumed Memory(MB)"; Expression = { 
      [math]::Round(($_.WorkingSetSize/1MB), 2) }}, 
     @{Name = "Cpu Time"; Expression = { 
      "{0:HH:mm:ss}" -f ([datetime]$ts = [timespan]::FromTicks($_.KernelModeTime + $_.UserModeTime)).Ticks }} 

出力:

Name       ProcessID Consumed Memory(MB) Cpu Time 
----       --------- ------------------- -------- 
SC.Server.WindowsService.exe  58400    2300.46 
tesvc.exe       1680    138.88 
iisexpress.exe     59004    98.61 
java.exe       39020    77.68 
mcshield.exe      2436    63.68 
svchost.exe      828    47.12 
lsass.exe       588    33.65 
CcmExec.exe      2496    20.8 
svchost.exe      692    14.34 
svchost.exe      796    14.14

あなたがこの中に間違っているものを私に教えてくださいだろうか?

+1

エラー'このタイプの" 00:01:33.0156250 "の値を" System.TimeSpan "に変換することはできません" System.D ateTime "。これらは、この部分によって引き起こされます。[datetime] $ ts = [timespan] :: fromticks(... '。)これを修正する方法はわかりません。 – sodawillow

答えて

2

あなたのかっこはオフであり、割り当て操作を削除する必要があります。 Timespan値のダニをDateTime値にキャストする必要があります。

変更この:この中

"{0:HH:mm:ss}" -f ([datetime]$ts = [timespan]::FromTicks($_.KernelModeTime + $_.UserModeTime)).Ticks 

"{0:HH:mm:ss}" -f [datetime][timespan]::FromTicks($_.KernelModeTime + $_.UserModeTime).Ticks 

あなたはformat the Timespan directlyも同様に第二の画分をでき得ることと罰金なら:

'{0:c}' -f [timespan]::FromTicks($_.KernelModeTime + $_.UserModeTime) 
+0

すごくありがとう。 –

関連する問題