本文目录导读:

获取主板序列号可以通过多种脚本语言实现,以下是一些常见的方法:
Windows 系统 (PowerShell)
# 方法1:使用 WMI Get-WmiObject -Class Win32_BaseBoard | Select-Object -ExpandProperty SerialNumber # 方法2:更简洁的写法 (Get-WmiObject Win32_BaseBoard).SerialNumber # 方法3:使用 CIM (推荐) Get-CimInstance -ClassName Win32_BaseBoard | Select-Object -ExpandProperty SerialNumber
Windows 系统 (CMD/Batch)
@echo off wmic baseboard get serialnumber
Linux 系统 (Shell/Bash)
# 方法1:使用 dmidecode (需要root权限) sudo dmidecode -t baseboard | grep "Serial Number" # 方法2:只获取序列号 sudo dmidecode -s baseboard-serial-number # 方法3:从sysfs获取 (不需要root) cat /sys/class/dmi/id/board_serial
macOS 系统
# 方法1:使用 system_profiler system_profiler SPHardwareDataType | grep "Board Serial" # 方法2:使用 ioreg ioreg -l | grep "board-id"
Python 跨平台脚本
import platform
import subprocess
import sys
def get_board_serial():
system = platform.system()
if system == "Windows":
try:
import wmi
c = wmi.WMI()
for board in c.Win32_BaseBoard():
return board.SerialNumber
except:
# 备用方法
result = subprocess.run(
["wmic", "baseboard", "get", "serialnumber"],
capture_output=True, text=True
)
return result.stdout.strip().split('\n')[1].strip()
elif system == "Linux":
try:
# 尝试从sysfs获取
with open("/sys/class/dmi/id/board_serial", "r") as f:
return f.read().strip()
except:
# 使用dmidecode
result = subprocess.run(
["sudo", "dmidecode", "-s", "baseboard-serial-number"],
capture_output=True, text=True
)
return result.stdout.strip()
elif system == "Darwin": # macOS
result = subprocess.run(
["system_profiler", "SPHardwareDataType"],
capture_output=True, text=True
)
for line in result.stdout.split('\n'):
if "Board Serial" in line:
return line.split(':')[1].strip()
return "Not available"
if __name__ == "__main__":
serial = get_board_serial()
print(f"主板序列号: {serial}")
注意事项
- 权限问题:Linux下某些方法需要root权限
- 虚拟环境:在虚拟机中可能返回空值或固定值
- 安全考虑:主板序列号属于硬件敏感信息,注意保护隐私
- 兼容性:不同主板厂商的序列号格式可能不同
推荐使用场景
- Windows:推荐使用PowerShell的Get-CimInstance方法
- Linux:推荐使用
/sys/class/dmi/id/board_serial(无需root) - 跨平台:使用Python脚本处理
选择适合你操作系统和需求的方法即可。