某些进程的日志中缺少CPU使用率

时间:2015-06-15 16:08:01

标签: powershell

我正在尝试获取有关所有进程和服务的信息,并将其保存到.log。

这是我的问题: 有些进程注意到CPU表中,我想添加类似“Nothing”的东西。我怎样才能做到这一点?

到目前为止,这是我的代码:

$ProcessTable = @{Expression={$_.ProcessName};Label="ProcessName";Width=40},
                @{Expression={$_.CPU};Label="CPU";Width=20}
$ServiceTable = @{Expression={$_.Name};Label="Name";Width=40},
                @{Expression={$_.Status};Label="Status";Width=10}

Get-Process |
  Sort-Object CPU -Descending |
  Select-Object ProcessName, CPU |
  Format-Table $ProcessTable |
  Out-File "C:\tmp\prozesse.log"

Get-Service |
  Select-Object Name, Status |
  Format-Table $ServiceTable |
  Out-File "C:\tmp\prozesse.log" -Append

notepad "C:\tmp\prozesse.log"

1 个答案:

答案 0 :(得分:2)

由于权限不足,您无法为某些流程获取CPU。那么你得到空值。输出"没什么"你必须将cpu值与$null进行比较,如下所示:

$ProcessTable=@{Expression={$_.ProcessName};Label="ProcessName";Width=40},@{Expression={$cpu=$_.CPU;if($cpu -eq $null){"Nothing";} else {$cpu;}};Label="CPU";Width=20}

$ServiceTable = @{Expression={$_.Name};Label="Name";Width=40},@{Expression={$_.Status};Label="Status";Width=10}
Get-Process | Sort-Object CPU -Descending | Select-Object ProcessName, CPU | format-table $ProcessTable |Out-File "C:\tmp\prozesse.log"
Get-Service | Select-Object Name, Status | Format-Table $ServiceTable | Out-File C:\tmp\prozesse.log -Append