如何用脚本获取主板信息?

wen 实用脚本 2

本文目录导读:

如何用脚本获取主板信息?

  1. Windows (使用 PowerShell 或 WMI)
  2. Linux (使用 dmidecode)
  3. macOS (使用 system_profiler)
  4. 总结脚本示例
  5. 常见问题及注意事项

获取主板信息的方法取决于你使用的操作系统,以下是 Windows、Linux 和 macOS 三个平台常用的脚本方式。

Windows (使用 PowerShell 或 WMI)

这是最常用且信息最丰富的方式。

方法 A: 使用 PowerShell (推荐,信息最全)

PowerShell 可以直接调用 WMI 类来获取详细的硬件信息。

获取所有主板信息:

Get-WmiObject Win32_BaseBoard

或者使用更新的 Get-CimInstance:

Get-CimInstance Win32_BaseBoard

获取关键字段 (制造商、型号、序列号、版本):

Get-WmiObject Win32_BaseBoard | Select-Object Manufacturer, Product, SerialNumber, Version

输出示例:

Manufacturer Product              SerialNumber           Version
------------ -------              ------------           -------
ASUSTeK COMPUTER INC. ROG STRIX X670E-E GAMING WIFI   123456789000      Rev 1.xx

提示: SerialNumber 为空,说明主板可能没有烧录序列号(常见于组装机或工程样品),或者被 BIOS 设置为隐藏。

方法 B: 使用 WMIC (传统命令行)

cmd 命令行下运行:

wmic baseboard get Manufacturer, Product, SerialNumber, Version

Linux (使用 dmidecode)

dmidecode 是 Linux 下获取主板信息的标准工具,它需要 root 权限读取 DMI 表。

安装 dmidecode:

# Debian/Ubuntu
sudo apt install dmidecode
# CentOS/RHEL/Fedora
sudo yum install dmidecode
# 或
sudo dnf install dmidecode

获取主板信息:

sudo dmidecode -t baseboard

获取关键字段 (制造商、产品名、序列号、版本):

sudo dmidecode -s baseboard-manufacturer
sudo dmidecode -s baseboard-product-name
sudo dmidecode -s baseboard-serial-number
sudo dmidecode -s baseboard-version

输出示例:

ASUSTeK COMPUTER INC.
ROG STRIX X670E-E GAMING WIFI
123456789000
Rev 1.xx

提示: 在某些虚拟机或容器环境中,dmidecode 可能无法获取真实物理信息。

替代方案 (无需 root): 读取 /sys 文件系统 (部分信息)

如果无法使用 sudo,可以尝试读取 sysfs (信息可能不如 dmidecode 完整):

cat /sys/class/dmi/id/board_vendor
cat /sys/class/dmi/id/board_name
cat /sys/class/dmi/id/board_serial  # 通常需要 root 才能读取
cat /sys/class/dmi/id/board_version

注意: board_serial 文件通常权限为 400 且属主为 root,普通用户无法读取。

macOS (使用 system_profiler)

macOS 的内置命令可以直接输出硬件信息。

获取所有主板(硬件)信息:

system_profiler SPHardwareDataType

你会看到类似“主板型号”(Model Identifier) 或者“主板序列号”(Serial Number) 等信息,macOS 中主板信息通常与系统序列号关联。

提取关键信息 (Boot ROM Version 或 Hardware UUID 有时也包含主板标识):

system_profiler SPHardwareDataType | grep "Model Identifier"
system_profiler SPHardwareDataType | grep "Serial Number (system)"

输出示例:

Model Identifier: MacBookPro18,3
Serial Number (system): FVF... (这是整机序列号)

注意: macOS 没有像 Windows 那样直接暴露“主板制造商”和“主板型号”的单独命令,因为苹果的自研芯片/主板是不公开的。主板序列号通常等于系统序列号硬件 UUID

总结脚本示例

Windows PowerShell 脚本 (.ps1)

Write-Host "=== 主板信息 ==="
$board = Get-WmiObject Win32_BaseBoard
Write-Host "制造商: $($board.Manufacturer)"
Write-Host "型号: $($board.Product)"
Write-Host "序列号: $($board.SerialNumber)"
Write-Host "版本: $($board.Version)"

Linux Bash 脚本 (.sh)

#!/bin/bash
echo "=== 主板信息 ==="
echo "制造商: $(sudo dmidecode -s baseboard-manufacturer)"
echo "型号: $(sudo dmidecode -s baseboard-product-name)"
echo "序列号: $(sudo dmidecode -s baseboard-serial-number)"
echo "版本: $(sudo dmidecode -s baseboard-version)"

macOS Bash 脚本 (.sh)

#!/bin/bash
echo "=== 主板信息 (macOS) ==="
system_profiler SPHardwareDataType | grep -E "Model Identifier:|Serial Number \(system\):|Hardware UUID:"

常见问题及注意事项

  1. 权限问题:
    • Linux: 使用 dmidecode 必须加 sudo
    • Windows: 通常无需管理员权限,但在某些企业环境中可能被组策略限制。
  2. 序列号为空: 很多主板(尤其是工程样板、某些品牌机)序列号字段是空白的,这是正常现象,不代表脚本出错。
  3. 虚拟机: 在 VMware、VirtualBox 等虚拟机中获取到的将是虚拟机模拟的主板型号,不是真实物理主板。
  4. DMI 表损坏: 极少数情况下,Linux 的 dmidecode 会因为 DMI 表损坏而报错。

抱歉,评论功能暂时关闭!