我正在做一个项目来获取特定进程的CPU使用率百分比以及RAM使用率(以KB为单位),大约为6。
我遇到了great guide来获取cpu%,它使用了以下代码:
# Option A: This is if you just have the name of the process; partial name OK
$ProcessName = "winlogon"
# Option B: This is for if you just have the PID; it will get the name for you
#$ProcessPID = "6860"
#$ProcessName = (Get-Process -Id $ProcessPID).Name
$CpuCores = (Get-WmiObject Win32_ComputerSystem).NumberOfLogicalProcessors
$Samples = (Get-Counter "\Process($Processname*)\% Processor Time").CounterSamples
$Samples | Select InstanceName,
@{Name="CPU %";Expression={[Decimal]::Round(($_.CookedValue / $CpuCores), 2)}}
但是,我找不到让它能够打到远程机器的方法。我可以使用它来列出本地进程,并且我尝试将带有PC名称的-ComputerName
开关添加到Get-WmiObject
以获取远程处理器计数。这会导致脚本在Select
失败。我还尝试使用2对$CpuCores
值进行硬编码并对远程计算机使用Get-Counter
,但我不确定如何根据具体示例对其进行格式化。
我从头开始写这个没有问题,但是我很难搞清楚如何获得特定进程的CPU或RAM使用率。最终目标是在TextBox控件中显示结果,该控件可由Name,CPU%利用率和内存利用率读取。
我有一个带有PC名称的GUI,以及一个结果的文本框,我在开发逻辑时遇到了麻烦,甚至无法获得我需要的数据。有什么想法吗?我花了大约2天的时间梳理互联网,发现了许多CPU和内存使用方法,但我没有任何东西可以粘在一起或远程使用。我对PowerShell并不陌生,但这一直令人困惑。任何有关开发逻辑的帮助都将受到赞赏。