如何通过Libre Hardware Monitor获取SSD/HDD温度?求PowerShell兼容替代API
解决LibreHardwareMonitor获取存储温度的问题
1. 修改PowerShell脚本获取SSD/HDD温度
你的现有脚本仅启用了CPU监控,要获取存储设备温度,需开启存储硬件监控权限,并调整传感器筛选逻辑。示例脚本如下:
cls $dll = "LibreHardwareMonitorLib.dll" Unblock-File -LiteralPath $dll Add-Type -LiteralPath $dll $monitor = [LibreHardwareMonitor.Hardware.Computer]::new() # 同时启用CPU和存储设备监控 $monitor.IsCPUEnabled = $true $monitor.IsStorageEnabled = $true $monitor.Open() # 遍历存储设备,提取温度传感器数据 $storageTemps = foreach ($hardware in $monitor.Hardware) { if ($hardware.HardwareType -eq 'Storage') { foreach ($sensor in $hardware.Sensors) { if ($sensor.SensorType -eq 'Temperature') { [PSCustomObject]@{ 设备名称 = $hardware.Name 传感器名称 = $sensor.Name 温度 = $sensor.Value } } } } } $monitor.Close() # 输出结果 $storageTemps
说明:
- 不同品牌的SSD/HDD,温度传感器的名称可能存在差异(如
Temperature、Drive Temperature),可根据实际输出调整筛选条件 HardwareType为Storage的硬件即为磁盘类设备
2. LibreHardwareMonitor调用参考
LibreHardwareMonitor无官方公开文档,但可通过查看源码类定义了解API:
Computer类:提供IsStorageEnabled、IsGpuEnabled等属性,用于启用对应硬件的监控权限Hardware类:通过HardwareType区分设备类型(CPU/Storage/GPU等),Sensors集合包含该设备的所有传感器数据Sensor类:SensorType字段区分传感器类型(温度/风扇转速/负载等),Value为传感器当前读数
3. 兼容PowerShell的其他硬件监控方案
- OpenHardwareMonitor:与LibreHardwareMonitor同源,API结构完全一致,DLL调用方式相同,支持CLI脚本开发
- Windows原生CIM/WMI:通过PowerShell内置命令调用Windows原生管理接口,示例:
# 获取磁盘基础信息(部分设备支持温度数据) Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model, SerialNumber # 筛选存储类温度传感器(仅部分设备支持) Get-CimInstance -ClassName Win32_TemperatureSensor | Where-Object {$_.Name -match 'Disk|Storage'} - Smartmontools:开源磁盘监控工具,提供
smartctl命令行工具,PowerShell可调用并解析其输出(需管理员权限) - HWiNFO CLI:HWiNFO的命令行版本,可输出全硬件维度的监控数据,支持PowerShell解析
内容的提问来源于stack exchange,提问作者ERNAZAR
相关产品推荐
相关产品推荐

