可直接用原生命令导出服务器全栈固件清单:Windows用PowerShell一键生成带时间戳的CSV,Linux用dmidecode+lshw+厂商命令组合输出结构化txt,信创环境结合/sys/class/dmi/id与厂商SDK工具,统一列头便于升级前后比对。

要导出完整的服务器硬件固件版本对照清单,核心目标是一次性采集 BIOS/UEFI、主板(Baseboard)、硬盘(Disk Drive)、RAID 控制卡、网卡、GPU(如 Atlas 800)、HDM/iDRAC/iLO 等关键固件层的型号与版本号,并结构化输出便于比对升级前后状态。不需要第三方工具,主流系统均可原生命令完成。
以下分场景给出可直接执行、结果清晰、支持存档复用的方法:
Windows 服务器(含物理机与 Hyper-V 主机)
用 PowerShell 整合关键固件字段,一键导出带时间戳的 CSV 清单:
$ts = Get-Date -Format "yyyyMMdd_HHmmss"
$report = @()
# BIOS 信息
$bios = Get-CimInstance Win32_BIOS | Select-Object @{n='Component';e={'BIOS'}},
@{n='Vendor';e={$_.Manufacturer}},
@{n='Version';e={$_.SMBIOSBIOSVersion}},
@{n='ReleaseDate';e={$_.ReleaseDate.ToString('yyyy-MM-dd')}},
@{n='SerialNumber';e={$_.SerialNumber}}
# 主板信息
$board = Get-CimInstance Win32_BaseBoard | Select-Object @{n='Component';e={'Motherboard'}},
@{n='Vendor';e={$_.Manufacturer}},
@{n='Version';e={$_.Product}},
@{n='ReleaseDate';e={'N/A'}},
@{n='SerialNumber';e={$_.SerialNumber}}
# 硬盘固件(含 NVMe/SATA/SAS)
$disks = Get-WmiObject Win32_DiskDrive | ForEach-Object {
[PSCustomObject]@{
Component = 'Disk'
Vendor = $_.Manufacturer.Trim()
Version = $_.FirmwareRevision.Trim()
ReleaseDate = 'N/A'
SerialNumber = $_.SerialNumber.Trim()
}
}
# RAID 卡(需厂商工具,通用 fallback:检查 SCSI/SAS 控制器固件)
$raid = Get-WmiObject Win32_SCSIController | Where-Object {$_.Name -match 'RAID|Adaptec|LSI|PERC|HBA'} | ForEach-Object {
[PSCustomObject]@{
Component = 'RAID Controller'
Vendor = $_.Manufacturer.Trim()
Version = $_.FirmwareRevision.Trim()
ReleaseDate = 'N/A'
SerialNumber = $_.PNPDeviceID
}
}
$report += $bios, $board, $disks, $raid
$report | Export-Csv -Path "$env:USERPROFILE\Desktop\firmware_inventory_$ts.csv" -NoTypeInformation
执行后桌面生成 firmware_inventory_20261009_145022.csv,可用 Excel 打开,列含组件类型、厂商、固件版本、发布日期、序列号,支持筛选比对。
Linux 服务器(含麒麟、CentOS、Ubuntu、ESXi)
使用 dmidecode + lshw + 厂商专用命令组合导出结构化文本清单:
# 生成带时间戳的纯文本报告 ts=$(date +%Y%m%d_%H%M%S) report="/tmp/firmware_report_$ts.txt" echo "=== Firmware Inventory Report ($ts) ===" > "$report" echo >> "$report" echo "【BIOS】" >> "$report" sudo dmidecode -t bios | grep -E "Vendor|Version|Release Date|Status" >> "$report" echo >> "$report" echo "【System / Motherboard】" >> "$report" sudo dmidecode -t system | grep -E "Manufacturer|Product Name|Serial Number|UUID" >> "$report" sudo dmidecode -t baseboard | grep -E "Manufacturer|Product Name|Version|Serial Number" >> "$report" echo >> "$report" echo "【Storage Controllers & Disks】" >> "$report" sudo lshw -class disk -short >> "$report" sudo smartctl --info /dev/sda 2>/dev/null | grep -E "Model|Firmware Version|Serial Number" >> "$report" # 替换为实际盘符 echo >> "$report" echo "【RAID Card (MegaCLI / storcli / hpssacli)】" >> "$report" # 示例(适配不同厂商): # sudo /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL | grep -i "firmware version" # sudo storcli /c0 show | grep "Firmware Version" echo "(请根据实际 RAID 厂商补充对应命令)" >> "$report" echo >> "$report" echo "【HDM / iDRAC / iLO】" >> "$report" # H3C:curl -k -u user:pass https://<hdm-ip>/api/monitoring/system_info | jq '.firmware_version' # Dell:racadm get BIOS.Version echo "(需登录带外管理界面或调用 REST API 获取)" >> "$report" cp "$report" "$HOME/Desktop/firmware_report_$ts.txt"</hdm-ip>
执行后桌面生成 .txt 文件,层级清晰,每类固件独立区块,方便人工核对或导入表格处理。
国产信创环境(如 Atlas 800、TaiShan、Kunpeng)
优先采用 dmidecode + /sys/class/dmi/id/ + 厂商 SDK 工具链:
- 必查项(无需 root):
cat /sys/class/dmi/id/{sys_vendor,product_name,bios_version,bios_date,board_vendor,board_name} - 补充项(需 root):
sudo dmidecode -t bios -t system -t baseboard | grep -E "Vendor|Name|Version|Date|Serial"
- Atlas 800 控制卡固件:
sudo /opt/huawei/accelerator/tools/accelerator_tool -v # 查看昇腾加速卡固件 sudo /opt/huawei/hdm/tools/hdmtool -c firmware -s query # HDM 固件查询(需 HDM 工具包)
所有输出建议统一重定向到一个 .csv 或 .md 文件,列头固定为:组件类型|厂商|型号|固件版本|发布日期|序列号|数据来源,后续升级时只需再跑一次,用 Excel 的「条件格式 → 突出显示单元格规则」对比两版差异即可定位待升级项。
不复杂但容易忽略的是:固件版本字符串常含空格、斜杠、大小写混用(如 2.6.4 vs 2.6.4.0),比对前建议统一 trim 并转小写;RAID 和 GPU 固件必须通过厂商专用工具获取,OS 层 WMI 或 DMI 通常不暴露其版本字段。










