可通过PowerShell远程批量获取域内计算机硬件配置,使用Get-CimInstance调用WMI/CIM接口采集CPU、内存、磁盘、系统等信息并导出CSV;需满足WinRM启用、防火墙放行、管理员权限等前提条件。
可以通过powershell远程获取域内(或可信网络中)计算机的硬件配置信息,核心思路是:使用 invoke-command 或 get-ciminstance 远程调用 wmi/cim 接口,批量采集 cpu、内存、磁盘、操作系统等关键数据,并导出为结构化文件(如 csv)便于分析。
前提条件与权限准备
确保执行环境满足以下基本要求,否则脚本会因权限或连接失败而中断:
- 运行脚本的账户需对目标计算机具有管理员权限(本地 Administrators 组成员,且启用了远程管理)
- 目标计算机已启用 WinRM(推荐执行
winrm quickconfig或通过 GPO 配置) - 防火墙允许入站 5985(HTTP)或 5986(HTTPS)端口;域环境下建议启用 CredSSP 或 Kerberos 认证
- 若跨网段或含非域机器,需提前测试单台连通性,例如:
Test-WSMan -ComputerName PC01
采集核心硬件信息的脚本逻辑
不依赖第三方模块,纯 PowerShell + CIM 即可完成。推荐使用 Get-CimInstance(比 Get-WmiObject 更现代、支持异步和会话复用):
计算机网络安全服务公司网站模板是一款适合提供云安全、网络安全、服务器管理。数据安全服务公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- CPU:查询
Win32_Processor,取 Name、NumberOfLogicalProcessors、MaxClockSpeed - 内存:汇总
Win32_PhysicalMemory的 Capacity,再用Win32_ComputerSystem获取 TotalPhysicalMemory 做交叉验证 - 磁盘:筛选
Win32_DiskDrive(物理硬盘)或Win32_Volume(卷信息),关注 Model、Size、MediaType - 系统:从
Win32_OperatingSystem提取 Caption、Version、OSArchitecture、LastBootUpTime - 网卡(可选):
Win32_NetworkAdapter | Where-Object {$_.NetEnabled -and $_.Name -notmatch "VMware|Virtual"}
批量执行与错误处理建议
避免脚本因某台主机宕机或拒绝访问而整体退出,应加入容错机制:
- 用
-ErrorAction SilentlyContinue抑制单机报错,配合$Error[0].Exception.Message记录失败原因 - 对每台主机单独封装采集逻辑,用
try/catch包裹 CIM 查询,并设置超时(-OperationTimeoutSec 30) - 主机列表建议从 Active Directory 获取:
Get-ADComputer -Filter * -Property Name,OperatingSystem | Select-Object Name,OperatingSystem,比手动维护 Hosts 列表更可靠 - 结果统一拼装为自定义对象([PSCustomObject]),字段对齐(如缺失值填
$null或 "N/A"),再统一导出:Export-Csv hardware_report.csv -Encoding UTF8 -NoTypeInformation
简化部署与安全提示
生产环境不建议直接在域控或管理员工作站上运行长时批量扫描。更稳妥的方式:
- 将脚本封装为带参数的函数(如
Get-NetworkHardwareInventory -ComputerName $list -OutputPath .\report.csv),方便复用 - 限制并发数(用
ForEach-Object -Parallel配合-ThrottleLimit 10),防止网络或目标主机过载 - 敏感信息(如序列号、BIOS 版本)是否采集需评估合规要求;默认跳过
Win32_BIOS.SerialNumber可减少权限争议 - 首次运行前,在 2–3 台典型机器上手动验证字段完整性,再推广到全网

















