怎么用脚本获取主板序列号

wen 实用脚本 1

本文目录导读:

怎么用脚本获取主板序列号

  1. Windows 系统 (PowerShell)
  2. Windows 系统 (CMD/Batch)
  3. Linux 系统 (Shell/Bash)
  4. macOS 系统
  5. Python 跨平台脚本
  6. 注意事项
  7. 推荐使用场景

获取主板序列号可以通过多种脚本语言实现,以下是一些常见的方法:

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}")

注意事项

  1. 权限问题:Linux下某些方法需要root权限
  2. 虚拟环境:在虚拟机中可能返回空值或固定值
  3. 安全考虑:主板序列号属于硬件敏感信息,注意保护隐私
  4. 兼容性:不同主板厂商的序列号格式可能不同

推荐使用场景

  • Windows:推荐使用PowerShell的Get-CimInstance方法
  • Linux:推荐使用/sys/class/dmi/id/board_serial(无需root)
  • 跨平台:使用Python脚本处理

选择适合你操作系统和需求的方法即可。

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