于企业运维的情景里,或在电脑维护之时,又遇设备批量管理的状况下,我们时常会有检测电脑硬件健康状态所需,此健康状态涵盖CPU、内存、磁盘、主板、网络等方面,借此来提前察觉问题 。
现今,我们会借助PowerShell去达成一键检测之举,然后,还要生成一份健康报告的自动化脚本。
这个教程,适合系统管理员用,适合 IT 运维工程师用,甚至适合普通用户用,并且不需要安装第三方工具。
一、实现目标
通过本文,你将实现以下功能:
一键检测系统主要硬件健康状况
自动输出检测报告(CPU温度、磁盘健康、内存占用等)
可批量执行在多台电脑上(企业环境)
无需安装插件,Windows 11 自带可用
️ 二、环境准备
打开 PowerShell(以管理员身份运行):
按压住Win键与X键,接着去挑选Windows PowerShell,且要是管理员身份的 。
三、检测脚本核心功能概览
我们的检测脚本将分为以下模块:
对CPU信息展开检测,对内存使用率予以监控,对磁盘健康以及温度进行检测,读取主板与BIOS信息,检测网络连接状态以及速率,自动生成健康报告文件。
四、完整 PowerShell 脚本
在PowerShell编辑器里,或者在记事本内,去创建脚本文件呢。
路径示例:
“C盘”下“Scripts”文件夹内的“CheckSystemHealth.ps1”文件 ,句号。
将以下完整内容复制进去
# 等号,连续出现,数量为多个,呈现间隔排列,且在等号之间存在一定的连贯长度,整体呈现出一种整齐且规律的排列态势,最终形成了一个较长的水平。
# Windows 11 自动化硬件健康检测脚本
# 作者: Jack Zhang
# 版本: v1.0
# ===========================================
“C:\Scripts\SystemHealthReport.txt”被设定为“$ReportPath” 。
"系统硬件健康报告", "减去", "\(获取当前日期\)", "之后", "输出到文件路径变量\(报告路径\)" 。
# ---- CPU 信息 ----
把“------------------ CPU信息 ------------------”输出到文件,路径是$ReportPath ,并且追加内容。
首先,通过执行 “ Get-CimInstance Win32_Processor ” 命令获取相关信息,接着对所获取信息使用“ Select-Object Name, MaxClockSpeed, NumberOfCores, NumberOfLogicalProcessors ”选取特定属性,选取操作完成后,再使用“ Format-Table ”进行格式化,格式化之后,将其转换为字符串即用“ Out-String ”,串转换之后,运用“ Out-File $ReportPath -Append ”将其输出到指定文件路径并以追加方式写入 ,。
# ---- 内存信息 ----
由“------------------ 内存使用率 ----------------”输出到文件路径为$ReportPath的文件中,并追加内容 |。
获取,与Win32操作系统相关的,Cim实例,将其结果,赋值给 mem,这个操作被执行 ,句号。
将内存的总可见内存大小减去空闲物理内存,所得结果除以1兆字节,得到已使用(容量),记为 $used 。
$total等于,$mem中的TotalVisibleMemorySize,除以,1MB 。
这个百分比的值,是通过已使用的量除以总量,再乘以一百而得到的,这个式子表示为,百分比等于括号内已使用的量。
被使用的内存量,以格式化的方式与总量且百分比一同输出到指定报告路径文件中,其中格式化包含内存占用当前值,以两位小数表示的GB数,除以以两位小数表示的GB数总量所得到的百分比,再将结果追加写入文件 -f 参数为已使用内存量、总量、百分比 | Out-File 命令将其输出到报告路径文件中且追加内容。
# ---- 磁盘健康 ----
那串样式符号,对应“磁盘健康状态”的内容,被输出到文件,文件路径是变量表示的那个路径,并且是以追加的方式写入的 。
执行能够获取名为Win32_DiskDrive的相关实例的操作,接着通过选择操作选中Model、Status、Size这些属性,随后进行格式化表格的操作,再将其转换为字符串形式,最后输出到指定的文件路径$ReportPath中并且是以追加的方式写入 。
# ---- 主板信息 ----
主板以及BIOS这部分内容,被输出到文件路径为$ReportPath的文件里,并且是以追加的方式进行输出。
对获取的系统主板相关信息,也就是通过执行Get - CimInstance Win32_BaseBoard命令所得到的内容,进行选择操作,即Select - Object Manufacturer, Product, SerialNumber,选取制造商、产品以及序列号这些属性,之后对其采用Format - Table进行格式化表格处理,再将处理后的结果通过Out - String转换为字符串形式,最后把该字符串通过Out - File输出到指定的报告路径文件。也就是$ReportPath,并且是以追加的方式写入文件 。
通过获取名为Win32_BIOS的CIM实例,选择其中的制造商、SMBIOSBIOS版本以及发布日期,接着进行格式化表格操作,再将其转换为字符串输出,最后追加输出到指定报告路径的文件$ReportPath中 。
# ---- 网络检测 ----
"------------------ 网络状态 ------------------",此内容被输出到文件,该文件路径为$ReportPath ,并且是以追加的方式进行输出的 。
# ---- 输出完成提示 ----
`n报告得到生成,具体为:$ReportPath ,之后通过管道输出到一个文件,即:$ReportPath 并以追加的方式写入`。
把“系统硬件健康检测完成!报告已保存到:$ReportPath”通过Write-Host输出。
五、运行脚本
在 PowerShell 管理员模式下执行:
C:\Scripts\CheckSystemHealth.ps1
加以执行之后,你会于C:\Scripts\SystemHealthReport.txt这个位置,看到像下面这样的后果展现出来着:
系统硬件健康报告 - 2025/10/06
--------------中央处理器信息--------------。
名称是,英特尔(R)酷睿( TM )i7 - 13700H ,这是一个特定的标识,代表着。
MaxClockSpeed: 4800
NumberOfCores: 14
NumberOfLogicalProcessors: 20
怎样去表述内存使用占究竟用掉占用什么比例的数据,究竟是多少的比例,多少部分到底被使用数据,到底用了多少比例的数据,到底是多少比例的应用,被使用的数据,究竟到底是多少比例,。
现此刻,内存所占使用量为,八个点二五GB,除以十 五点八九GB,得出的结果是百分之五十一点九零 ,就这样啦。
在磁盘方面,其健康的状况的呈现状态如何,是这样的一种情况,是处于何种的一种态势呢,这就是磁盘健康状态所涉及的方面,所涵盖的范畴,所包含的内容 。
Model: Samsung SSD 980 PRO
Status: OK
Size: 1000204886016
这块主板,以及与之相关联的BIOS ,它们是相互关联的部分 。
Manufacturer: ASUS
Product: PRIME B760M-A
SerialNumber: XXXXXXXXXXXX
...
六、可扩展功能
如果你想进一步增强脚本,可添加以下功能模块:
功能
PowerShell 模块
示例命令
GPU 状态
获取 - 统一信息模型实例 窗口系统32位视频控制器。
检查显卡型号与驱动
温度监控
联合 WMI,或者,OpenHardwareMonitor API 。
获取CPU温度
报告导出为HTML
ConvertTo-Html
生成图文报告
批量检测多台主机
使用 Invoke-Command
远程执行脚本
七、总结
通过本文,你学会了:
该方案非常适合: