本文目录导读:

获取系统序列号(通常指主板序列号、系统UUID或硬件ID)的方法强烈依赖于操作系统,不存在跨所有系统(Windows/Linux/macOS)通用的单一脚本。
以下提供针对不同系统的脚本方法,并附带重要的安全与权限说明。
Windows 系统(最常用)
在 Windows 中,通常使用 wmic(Windows Management Instrumentation Command-line,Windows管理规范命令行工具)或 powershell 来获取。
方法 A: 使用 CMD/Batch 脚本
新建一个 .bat 文件,内容如下:
@echo off echo 正在获取主板序列号(最接近"系统序列号")... wmic baseboard get serialnumber echo. echo 正在获取系统 UUID(唯一标识符)... wmic csproduct get uuid
输出示例:
SerialNumber
NB12345678
UUID
A1B2C3D4-E5F6-7890-1234-567890ABCDEF
方法 B: 使用 PowerShell 脚本
新建一个 .ps1 文件,内容如下:
# 获取主板序列号(最常用) $Serial = (Get-WmiObject -Class Win32_BaseBoard).SerialNumber Write-Host "主板序列号: $Serial" # 获取 BIOS 序列号(品牌机常见) $BIOSSerial = (Get-WmiObject -Class Win32_BIOS).SerialNumber Write-Host "BIOS序列号: $BIOSSerial" # 获取系统 UUID $UUID = (Get-WmiObject -Class Win32_ComputerSystemProduct).UUID Write-Host "系统 UUID: $UUID"
- 注意:某些组装机或虚拟机的主板序列号可能显示为
To be filled by O.E.M.(尚待被原始设备制造商填充)或0,这是正常的,此时可以尝试Win32_BIOS或Win32_ComputerSystemProduct。 - 权限:通常需要以管理员身份运行脚本。
Linux 系统
在 Linux 中,主要通过读取 /sys 文件系统或使用 dmidecode 命令。
方法 A: 使用 Shell 脚本(推荐)
新建一个 .sh 文件,内容如下:
#!/bin/bash echo "主板序列号:" sudo dmidecode -s baseboard-serial-number 2>/dev/null || echo "需要root权限或硬件不支持" echo "系统 UUID:" sudo dmidecode -s system-uuid 2>/dev/null || echo "需要root权限或硬件不支持" echo "机器序列号(品牌机如Dell/HP/Lenovo):" sudo dmidecode -s system-serial-number
- 依赖:需要安装
dmidecode(大多数发行版已预装,若没有可用sudo apt install dmidecode或sudo yum install dmidecode)。 - 权限:
dmidecode需要root权限,如果脚本被普通用户执行,可以用sudo,或者配置sudoers免密。
方法 B: 不依赖 root 的替代方案
#!/bin/bash # 某些信息无需root可读 echo "产品名称(CPU信息等):" cat /sys/devices/virtual/dmi/id/product_name 2>/dev/null || echo "不可读" echo "序列号(通常需root):" cat /sys/devices/virtual/dmi/id/product_serial 2>/dev/null || echo "需要root权限"
macOS 系统
在 macOS 中,使用 system_profiler 命令。
#!/bin/bash
echo "硬件 UUID:"
system_profiler SPHardwareDataType | grep "Hardware UUID" | awk '{print $3}'
echo "序列号(Serial Number,即系统序列号):"
system_profiler SPHardwareDataType | grep "Serial Number (system)" | awk '{print $4}'
echo "主板序列号(如有):"
system_profiler SPHardwareDataType | grep "Board Serial" | awk '{print $4}'
- 权限:普通用户即可执行。
重要注意事项
-
含义差异:
- Windows:
wmic baseboard get serialnumber是主板序列号;wmic bios get serialnumber是 BIOS 序列号(品牌机如 Dell 会与机箱标签一致)。 - Linux/macOS:
system-serial-number通常对应硬件机箱上的序列号(服务标签),更接近普通用户理解的“系统序列号”。 - 不同品牌(Dell、HP、Lenovo、组装机)返回的信息格式可能不同,组装机往往缺失序列号。
- Windows:
-
权限安全:
- Windows 脚本建议在管理员终端中运行。
- Linux 脚本使用
sudo dmidecode。 - 恶意脚本也可以获取这些信息,因此不要随意运行来源不明的脚本。
-
虚拟环境:
在虚拟机(VMware、VirtualBox、云服务器)中,序列号可能是虚拟机动态生成的随机值,不可用于硬件唯一性绑定。
最通用的方法
| 操作系统 | 推荐命令 | 含义 |
|---|---|---|
| Windows | wmic csproduct get uuid |
系统 UUID(唯一且稳定) |
| Linux | sudo dmidecode -s system-uuid |
系统 UUID |
| macOS | system_profiler SPHardwareDataType \ | grep “Hardware UUID” |
如果你是普通用户,最通用且跨平台的概念是系统 UUID,它通常不会轻易改变,如果有具体的脚本语言(Python、PowerShell 等)或操作系统环境需要,请补充说明,我可以提供更精确的代码。