PowerShell远程批量导出服务器BIOS、主板、硬盘固件信息:需启用WinRM、开放5985/5986端口、本地管理员权限及PowerShell 5.1+;脚本自动提取SMBIOSBIOSVersion、Product、FirmwareRevision等字段,失败时降级提示,结果导出为带时间戳的CSV报告。

用 PowerShell 远程批量导出服务器硬件固件版本清单,无需第三方工具,一条命令框架就能覆盖 BIOS、主板、硬盘三类关键固件信息,适合资产登记、升级核查或合规审计。
准备前提:确保远程访问通路可用
目标服务器需满足以下四项条件,否则命令会超时或拒绝连接:
- 已启用 WinRM 服务(运行 winrm quickconfig 可一键配置)
- 执行机与目标服务器网络互通,且防火墙放行 TCP 5985(HTTP)或 5986(HTTPS)端口
- 当前账号在目标服务器上有本地管理员权限,或已在域中具备相应委派权限
- 目标系统为 Windows Server 2012 R2 及以上,或 Windows 10/11(PowerShell 5.1+)
核心命令:逐台获取并整合固件字段
以下脚本可对单台或列表中的多台服务器执行,自动提取 BIOS 版本、主板型号、硬盘固件号三项最常核验的固件数据:
复制粘贴到管理员权限的 Windows 终端中运行(替换 Server01,Server02 为实际服务器名):
$servers = "Server01","Server02"
$results = foreach ($s in $servers) {
try {
$bios = Get-CimInstance -ClassName Win32_BIOS -ComputerName $s -ErrorAction Stop
$board = Get-CimInstance -ClassName Win32_BaseBoard -ComputerName $s -ErrorAction Stop
$disk = Get-WmiObject -Class Win32_DiskDrive -ComputerName $s -ErrorAction Stop |
Select-Object Model, FirmwareRevision, SerialNumber -First 1
[PSCustomObject]@{
ServerName = $s
BIOSVersion = $bios.SMBIOSBIOSVersion
BIOSManufacturer = $bios.Manufacturer
BIOSReleaseDate = $bios.ReleaseDate.ToString('yyyy-MM-dd')
MotherboardModel = $board.Product
MotherboardVendor = $board.Manufacturer
DiskModel = $disk.Model.Trim()
DiskFirmware = $disk.FirmwareRevision
DiskSerial = $disk.SerialNumber.Trim()
}
} catch {
[PSCustomObject]@{
ServerName = $s
BIOSVersion = "访问失败"
BIOSManufacturer = $_.Exception.Message.Substring(0, [Math]::Min(50, $_.Exception.Message.Length))
BIOSReleaseDate = ""
MotherboardModel = ""
MotherboardVendor = ""
DiskModel = ""
DiskFirmware = ""
DiskSerial = ""
}
}
}
$results | Export-Csv "$env:USERPROFILE\Desktop\Firmware_Report.csv" -NoTypeInformation -Encoding UTF8
执行完成后,桌面将生成 Firmware_Report.csv,可用 Excel 直接打开,含表头、可排序筛选。
进阶建议:适配大规模环境
若需处理几十上百台服务器,推荐以下优化方式:
- 把服务器名从数组改为从 Active Directory 自动拉取:Get-ADComputer -Filter {OperatingSystem -like "*Server*"} | Select-Object -ExpandProperty Name
- 加入并发控制(如 Start-Job 或 ForEach-Object -Parallel),加快采集速度
- 对 BIOS 序列号为 To Be Filled By O.E.M. 的设备,自动 fallback 到主板序列号,增强唯一性识别
- 导出时追加时间戳,例如文件名用 "Firmware_Report_$(Get-Date -Format 'yyyyMMdd_HHmm')"
补充说明:为什么这三类固件最关键
固件层是硬件行为的底层控制逻辑,直接影响稳定性与兼容性:
- BIOS/UEFI 版本:决定是否支持新 CPU、NVMe 启动、安全启动策略等;版本过旧可能引发蓝屏或无法识别设备
- 主板型号与厂商:用于查证官方支持矩阵、确定 BIOS 升级包适用范围,OEM 设备(如 Dell PowerEdge)需匹配专属固件
- 硬盘固件号(FirmwareRevision):同一型号硬盘不同固件可能存在性能差异或已知缺陷(如某些 SATA SSD 固件存在掉盘风险),必须逐盘比对

















