如何获取并识别操作系统所在磁盘的序列号?
获取操作系统所在磁盘的序列号
我来帮你解决这个问题——你之前用的wmic diskdrive get serialnumber,capabilities只能拿到所有磁盘的序列号和功能属性,但这些属性没法直接判断哪个是系统盘(毕竟capabilities里的3「可移除」、4「只读」、7「智能介质」都和系统盘无关)。咱们得通过系统卷→分区→磁盘的关联链条来精准定位,具体步骤如下:
步骤1:确认系统卷的盘符
系统盘一般是C:,但用命令确认更稳妥:
wmic logicaldisk where drivetype=3 get deviceid, systemname
执行后会列出所有本地磁盘,其中对应你当前系统的就是系统盘(通常是C:)。
步骤2:把系统卷关联到分区
用系统盘符找到对应的分区设备ID:
wmic volume where driveletter="%SystemDrive%" get deviceid
返回的结果类似\\?\Volume{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\,复制这个ID备用。
步骤3:把分区关联到磁盘
用刚才的分区设备ID找到对应的磁盘编号:
wmic partition where deviceid="\\?\Volume{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\" get diskindex
这里把引号里的内容替换成你步骤2拿到的设备ID,执行后会得到一个数字(比如0或1),这就是磁盘的索引编号。
步骤4:获取目标磁盘的序列号
最后用磁盘索引编号拿到对应的序列号:
wmic diskdrive where index=0 get serialnumber, model
把0换成你步骤3得到的编号就行。
一步到位的快捷命令
要是不想分步操作,直接在CMD里执行这个组合命令就行(会自动完成所有关联步骤):
for /f "skip=1 tokens=2 delims==" %d in ('wmic volume where driveletter^="%SystemDrive%" get deviceid /value') do for /f "skip=1 tokens=2 delims==" %i in ('wmic partition where deviceid^="%d%" get diskindex /value') do wmic diskdrive where index^=%i get serialnumber, model
内容的提问来源于stack exchange,提问作者Dinesh Gowda




