是否可以通过 PowerShell 获取系统健康状态?诸如 CPU 利用率、已用 RAM、CPU 温度等信息。
答案1
由于 PowerShell 可以创建.NET Framework 对象,我建议绩效计数器此任务的类。
这个类使用起来可能有点麻烦,但是提供了您需要的大部分功能。
要获取类别列表,只需调用静态GetCategories()
方法即可:
[System.Diagnostics.PerformanceCounterCategory]::GetCategories()
为了帮助您入门,我写了一个小演示:
$pc_prc = new-object System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total")
$pc_ram = new-object System.Diagnostics.PerformanceCounter("Memory", "Available MBytes")
while(1) {
$time = get-date
echo ======================
echo $time
echo ======================
$pc_prc_value = $pc_prc.NextValue()
$pc_ram_value = $pc_ram.NextValue()
echo " + Processor Load: $pc_prc_value %"
echo " + Available Memory: $pc_ram_value MB"
sleep 1
}
笔记该PerformanceCounter
班级才不是支持检索 CPU 温度数据,因为该过程高度依赖于架构。
查看这个问题了解更多信息。
答案2
您可以使用开放硬件监视器
开放硬件监视器是一款免费的开源软件,可监视计算机的温度传感器、风扇速度、电压、负载和时钟速度。
您可以在此处访问命令行版本:
输出示例部分:
PS C:\Users\myuser\OpenHardwareMonitorReport> .\OpenHardwareMonitorReport.exe
Open Hardware Monitor Report
--------------------------------------------------------------------------------
Version: 0.8.0.2
--------------------------------------------------------------------------------
Common Language Runtime: 4.0.30319.42000
Operating System: Microsoft Windows NT 6.2.9200.0
Process Type: 32-Bit
--------------------------------------------------------------------------------
Sensors
|
+- HP 00F52W (/mainboard)
|
+- Intel Core i7-3770 (/intelcpu/0)
| +- Bus Speed : 99.7734 99.7734 99.7784 (/intelcpu/0/clock/0)
| +- CPU Core #1 : 3691.62 3691.62 3791.58 (/intelcpu/0/clock/1)
| +- CPU Core #2 : 3691.62 3691.62 3791.58 (/intelcpu/0/clock/2)
| +- CPU Core #3 : 3791.39 3791.39 3891.36 (/intelcpu/0/clock/3)
| +- CPU Core #4 : 3691.62 3691.62 3891.36 (/intelcpu/0/clock/4)
| +- CPU Core #1 : 42 42 43 (/intelcpu/0/temperature/0)
| +- CPU Core #2 : 43 37 43 (/intelcpu/0/temperature/1)
| +- CPU Core #3 : 42 35 42 (/intelcpu/0/temperature/2)
| +- CPU Core #4 : 45 41 45 (/intelcpu/0/temperature/3)
| +- CPU Package : 45 43 45 (/intelcpu/0/temperature/4)