菜鸟科技网

如何通过命令快速获取硬盘序列号?

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

如何通过命令快速获取硬盘序列号?-图1
(图片来源网络,侵删)

Windows系统中获取硬盘序列号的命令

Windows系统提供了多种命令行工具来获取硬盘序列号,其中最常用的是wmic命令和diskpart工具,这两种方法无需安装第三方软件,兼容性较好,适合大多数Windows环境。

使用wmic命令

wmic(Windows Management Instrumentation Command-line)是Windows管理工具的命令行接口,可以通过查询系统管理类获取硬件信息,获取硬盘序列号的具体命令如下:

wmic diskdrive get SerialNumber

执行后,命令会返回系统中所有硬盘的序列号,每行一个序列号,如果需要更详细的信息(如型号、大小等),可以扩展命令:

wmic diskdrive get Model,SerialNumber,Size

示例输出

如何通过命令快速获取硬盘序列号?-图2
(图片来源网络,侵删)
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
...

注意事项

如何通过命令快速获取硬盘序列号?-图3
(图片来源网络,侵删)
  • 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 TB

Linux系统中获取硬盘序列号的命令

Linux系统下,硬盘信息通常存储在/dev目录或/sys文件系统中,通过读取设备文件或系统文件可以获取序列号,常用的命令包括hdparmsmartctllsblk

使用hdparm命令

hdparm是Linux下常用的磁盘工具,可以读取硬盘的标识信息,安装后(需root权限),执行以下命令:

sudo hdparm -I /dev/sda | grep "Serial Number"

其中/dev/sda为目标硬盘设备名(可根据lsblkfdisk -l查询),输出示例:

Serial Number:    WD-WCC4N0KTY3K

注意事项

  • 需要先安装hdparm工具(Ubuntu/Debian下使用sudo apt install hdparm,CentOS/RHEL下使用sudo yum install hdparm)。
  • 部分硬盘可能需要--security-freeze等参数解锁信息,具体取决于硬盘固件。

使用smartctl命令

smartctlsmartmontools包的一部分,专门用于监控硬盘的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,可以使用diskutilsystem_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的wmicdiskpart,Linux的hdparmsmartctl)交叉验证。

问题2:获取的硬盘序列号是否可用于唯一标识硬件?
解答:硬盘序列号通常作为硬件唯一标识,但存在例外:①部分厂商可能使用相同序列号;②用户可重置序列号(需特定工具);③虚拟硬盘可能生成随机序列号,在关键应用场景(如软件授权)中,建议结合其他硬件信息(如CPU ID、主板序列号)综合验证。

分享:
扫描分享到社交APP
上一篇
下一篇