我正在尝试获取有关所有进程和服务的信息,并将其保存到.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"
答案 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