【问题标题】:How to get CPU percentage in powershell without using performance counter objects?如何在不使用性能计数器对象的情况下在 powershell 中获取 CPU 百分比?
【发布时间】:2019-08-23 16:07:48
【问题描述】:

我正在尝试从我的组织中的多台计算机获取 CPU 百分比,其中一些计算机由于注册表故障或损坏,它们的性能计数器不返回任何数据。我一直在尝试找到一个代码来在不使用这些计数器的情况下查找 CPU 百分比,以便我的 powershell 脚本也可以在这些计算机上运行。

当我开始推送以下代码时,我意识到这可能会发生:

$ $($(Get-WmiObject win32_processor | select LoadPercentage).LoadPercentage) | Measure-Object -Average).Average

之后我尝试了公共信息模块(代码如下):

((GET-CIMInstance -class Win32_PerfFormattedData_Counters_ProcessorInformation) | Measure-Object -property PercentProcessorPerformance -Average)

(Get-CimInstance -ClassName Win32_Processor).LoadPercentage

如果这里有任何建议或一段代码可以帮助我在不使用计数器的情况下获得 CPU 百分比,请指教。提前致谢。

【问题讨论】:

  • 为什么不试试fixcounters呢?
  • 有这么多的计算机,负责他们的人不想做任何注册表更改 atm。我只想让他们明白。
  • 全新安装 Windows [咧嘴笑]

标签: powershell powershell-5.0 get-wmiobject


【解决方案1】:

我是这样做的。

$sleepseconds = 1
$numcores = 4
$id = 6416
$cpu1 = (get-process -Id $id).cpu
sleep $sleepseconds
$cpu2 = (get-process -Id $id).cpu

$cpupercent = [int](($cpu2 - $cpu1)/($numcores*$sleepseconds) * 100)
$cpupercent

【讨论】:

    【解决方案2】:

    Manually rebuilding counters 是解决此问题的最佳方法。感谢@vonPryz 指出这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多