在计算机管理和系统维护中,获取硬盘序列号是一项常见需求,无论是用于硬件资产管理、故障排查还是软件授权验证,硬盘序列号作为硬件的唯一标识符都具有重要作用,通过命令行方式获取硬盘序列号,不仅能快速操作,还能在脚本中实现自动化处理,本文将详细介绍在不同操作系统中使用命令获取硬盘序列号的方法,包括Windows、Linux及macOS系统,并辅以实例说明和注意事项,最后附上相关问答环节。

Windows系统中获取硬盘序列号的命令
Windows系统提供了多种命令行工具来获取硬盘序列号,其中最常用的是wmic命令和diskpart工具,这两种方法无需安装第三方软件,兼容性较好,适合大多数Windows环境。
使用wmic命令
wmic(Windows Management Instrumentation Command-line)是Windows管理工具的命令行接口,可以通过查询系统管理类获取硬件信息,获取硬盘序列号的具体命令如下:
wmic diskdrive get SerialNumber
执行后,命令会返回系统中所有硬盘的序列号,每行一个序列号,如果需要更详细的信息(如型号、大小等),可以扩展命令:
wmic diskdrive get Model,SerialNumber,Size
示例输出:

Model SerialNumber Size
ST1000DM010-1ER182 WD-WCC4N0KTY3K 1000204886016
Samsung SSD 870 EVO 1TB S3Z8NB0K123456 1000204886016注意事项:
- 部分硬盘(尤其是外置硬盘或USB接口硬盘)可能无法返回序列号,或显示为空值,这通常与硬盘的固件或接口类型有关。
- 在Windows XP系统中,
wmic命令可能需要额外支持,建议在较新的Windows版本(如Windows 7及以上)中使用。
使用diskpart工具
diskpart是Windows内置的磁盘分区管理工具,通过交互式命令可以获取硬盘的序列号,操作步骤如下:
diskpart list disk select disk 0 // 选择目标磁盘(0为第一块硬盘,根据实际情况调整) detail disk exit
在detail disk的输出结果中,Serial Number字段即为硬盘序列号。
Disk ID: ABCD1234
Type: ATA
Serial Number: WD-WCC4N0KTY3K
...注意事项:

diskpart需要管理员权限,需以管理员身份运行命令提示符。- 对于多磁盘系统,需通过
list disk确认目标磁盘的编号,避免误操作。
使用PowerShell命令
Windows PowerShell提供了更灵活的对象操作方式,获取硬盘序列号的命令如下:
Get-PhysicalDisk | Select-Object SerialNumber, FriendlyName, Size
此命令会返回物理硬盘的序列号、友好名称和容量信息,输出格式更易读。
SerialNumber FriendlyName Size
----------- ------------ ----
S3Z8NB0K123456 Samsung SSD 870 EVO 1TB 1 TB
WD-WCC4N0KTY3K ST1000DM010-1ER182 1 TBLinux系统中获取硬盘序列号的命令
Linux系统下,硬盘信息通常存储在/dev目录或/sys文件系统中,通过读取设备文件或系统文件可以获取序列号,常用的命令包括hdparm、smartctl和lsblk。
使用hdparm命令
hdparm是Linux下常用的磁盘工具,可以读取硬盘的标识信息,安装后(需root权限),执行以下命令:
sudo hdparm -I /dev/sda | grep "Serial Number"
其中/dev/sda为目标硬盘设备名(可根据lsblk或fdisk -l查询),输出示例:
Serial Number: WD-WCC4N0KTY3K注意事项:
- 需要先安装
hdparm工具(Ubuntu/Debian下使用sudo apt install hdparm,CentOS/RHEL下使用sudo yum install hdparm)。 - 部分硬盘可能需要
--security-freeze等参数解锁信息,具体取决于硬盘固件。
使用smartctl命令
smartctl是smartmontools包的一部分,专门用于监控硬盘的SMART信息,命令如下:
sudo smartctl -i /dev/sda | grep "Serial Number"
输出示例:
Serial Number: WD-WCC4N0KTY3K注意事项:
- 需安装
smartmontools(Ubuntu/Debian下sudo apt install smartmontools)。 - 对于NVMe SSD,设备名可能为
/dev/nvme0n1,命令需调整为sudo smartctl -i /dev/nvme0n1。
通过/sys文件系统读取
Linux将硬件信息暴露在/sys文件系统中,可以直接读取序列号:
cat /sys/block/sda/device/serial
此方法无需额外安装工具,但需要确认设备路径正确(例如NVMe硬盘路径为/sys/block/nvme0n1/device/serial)。
macOS系统中获取硬盘序列号的命令
macOS系统基于Unix,可以使用diskutil或system_profiler命令获取硬盘序列号。
使用diskutil命令
diskutil是macOS内置的磁盘管理工具,命令如下:
diskutil info disk0 | grep "Device / Media Name"
其中disk0为磁盘标识符(可通过diskutil list查询),输出示例:
Device / Media Name: APPLE SSD AP0256
Device / Media Name: WD My Passport 2520注意事项:
- 对于外置硬盘,序列号可能显示在
Device / Media Name字段中,部分情况需结合system_profiler。
使用system_profiler命令
system_profiler提供更详细的硬件信息,命令如下:
system_profiler SPStorageDataType | grep "Serial Number"
输出示例:
Serial Number: WCC4N0KTY3K跨平台脚本实现示例
若需在不同操作系统中统一获取硬盘序列号,可以编写简单的Shell脚本(Linux/macOS)或批处理脚本(Windows),Linux/macOS下的Bash脚本:
#!/bin/bash
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
sudo hdparm -I /dev/sda | grep "Serial Number" | awk '{print $3}'
elif [[ "$OSTYPE" == "darwin"* ]]; then
system_profiler SPStorageDataType | grep "Serial Number" | awk '{print $3}'
fi相关问答FAQs
问题1:为什么某些硬盘无法通过命令获取序列号?
解答:可能的原因包括:①硬盘固件不支持序列号暴露;②接口问题(如USB转接卡可能屏蔽序列号);③操作系统权限不足(需管理员/root权限),建议尝试不同工具(如Windows的wmic和diskpart,Linux的hdparm和smartctl)交叉验证。
问题2:获取的硬盘序列号是否可用于唯一标识硬件?
解答:硬盘序列号通常作为硬件唯一标识,但存在例外:①部分厂商可能使用相同序列号;②用户可重置序列号(需特定工具);③虚拟硬盘可能生成随机序列号,在关键应用场景(如软件授权)中,建议结合其他硬件信息(如CPU ID、主板序列号)综合验证。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/455109.html<
