做运维那几年,我干过不少“抄序列号”的活。最崩溃的一次,是年底资产盘点到一半,行政拿着Excel表格来找我:六十多台电脑,每台要设备序列号、MAC地址和硬盘序列号,半天内交。那时候要是还不会用命令行挨个翻设备管理器,估计加班到凌晨都完不成。后来熟练了,整理一台机器的这三项信息,从头到尾不超过三十秒。
Windows 查询计算机设备序列号、MAC地址和硬盘序列号,看起来是三件小事,但真正动手会踩到一堆细节:WMIC在新系统里被砍、硬盘序列号返回乱序、虚拟网卡混进MAC列表……这篇文章把我用过的图形界面和命令行两套路径,以及最终沉淀下来的批量盘点方案一次性讲清楚,最后附上我实际排查过的常见问题。看完你基本可以照着抄作业。
1. 先别急着敲命令:这三类“序列号”分别是什么
很多人上来就搜“硬盘序列号怎么查”,其实连要查的对象都没分清楚。设备序列号、MAC地址、硬盘序列号,各自承担的任务完全不同,登记场景也不同。我先把基础概念捋一遍,后面查起来才不会张冠李戴。
1.1 设备序列号:整机的身份证
设备序列号(也叫整机序列号、主机序列号)是厂商出厂时分配给整台电脑的编号,一般烧录在主板的BIOS/DMI信息区域里。笔记本、品牌台式机基本都有,它对应的是这台机器本身,而不是某个配件。保修服务、售后申请、出厂配置查询,靠的都是它。有些企业在入域、资产标签、IT服务台工单系统里,也会拿设备序列号当唯一标识。
这个序列号存放在BIOS的DMI信息里,所以有个很有意思的现象:哪怕你换了硬盘、重装系统,序列号通常还在。只要BIOS没刷坏,它就一直跟着主板走。查询时看到“Default string”“To be filled by O.E.M.”这类值也别慌,多半是组装机或者工程样板机,厂商没往里写有效序列号,这种情况只能靠主板序列号加MAC地址兜底。
1.2 MAC地址:网卡层面的身份标识
MAC地址是网卡的物理地址,烧录在网卡的EEPROM里,是一串48位的十六进制数,通常写成“A4-B1-C1-2D-3E-4F”或“A4:B1:C1:2D:3E:4F”的格式。它解决的是“这台设备在网络里是谁”的问题。
做网络管理的人对MAC最敏感:DHCP要按MAC做保留地址、无线网络要做MAC白名单、交换机要按MAC定位端口,还有远程开机(Wake-on-LAN)也得靠它。但这里有个坑——一台电脑通常不止一块网卡。笔记本有有线网卡和无线网卡,有的还带蓝牙,蓝牙同样有MAC;再算上WSL、Hyper-V、虚拟WiFi这类功能创建的虚拟网卡,ipconfig /all一刷就是一大串。查询的时候必须先想清楚:你要登记的是物理有线还是物理无线,还是全部都要。
1.3 硬盘序列号:硬盘自己的“钢印号”
硬盘序列号是硬盘出厂时印刷在盘体标签上的唯一编号,相当于硬盘的钢印号,和生产厂家、型号、固件版本一起构成硬盘的身份信息。硬盘保修、返厂检测、资产登记都会用到它,主要用来证明“这块盘就是那块盘”。
这里特别容易混的是“卷序列号”。在CMD里敲vol C:会返回类似“3A6E-8B2F”的一串东西,很多新手以为这就是硬盘序列号,其实不是。卷序列号是Windows格式化分区时随机生成的逻辑标识,只要重新格式化就会变,跟硬盘出厂钢印号完全没关系。做资产盘点的时候,拿卷序列号去登记硬盘是会闹笑话的。后续章节里,凡是我说“硬盘序列号”,指的都是硬盘物理序列号,而不是卷序列号。
2. 图形界面查询:不敲命令也能拿到,只是步骤多
如果你手里只有一台机器,偶尔查一次,完全没必要上命令行。图形界面虽然点来点去麻烦,但胜在直观。我从三类信息分别说下最靠谱的图形界面路径。
2.1 设备序列号最靠谱的GUI路径在BIOS里
Windows自带的“系统信息”工具(运行里输入msinfo32)能看到系统制造商、系统型号、BIOS版本这些信息,但很多时候并不直接显示整机序列号。设置里的“系统 > 关于”也一样,通常只给个设备ID和系统SKU,用处有限。想在图形界面里稳定拿到设备序列号,最快的方法是重启进BIOS:开机时按F2、Del或Esc进固件设置界面,在System Information或Product Information这类菜单里,一般都能看到Product Serial Number。
还有一个笨办法但也很实用:翻机身贴纸。笔记本底部、台式机机箱侧面、电池仓内,厂商通常会贴带有序列号的标签,格式如“Service Tag”“SN”“Serial No.”。贴纸会磨损,所以我还是建议以BIOS里读到的值为准。
2.2 MAC地址在“硬件属性”里就有
Windows 10和Windows 11都把这个入口放在了显眼位置。以Windows 11为例:设置 > 网络和Internet > WLAN(或以太网),找到当前连接的网络,点击“硬件属性”,里面会明确列出“物理地址(MAC)”,下面还有IP地址、DNS等信息。Windows 10的路径类似,设置 > 网络和Internet > 查看网络属性,同样能看到物理地址。
老系统也有自己的入口:控制面板 > 网络和共享中心 > 更改适配器设置,右键当前网卡选状态,再点“详细信息”,“物理地址”一行就是MAC。这个办法在Windows 7到Windows 11都通用,只是步骤更多。图形界面查MAC的缺点在于一次只能看一块网卡,如果机器装了五六块网卡,你得来回切换好几轮。
2.3 硬盘序列号用第三方工具反而最快
Windows设备管理器里能看硬盘的详细属性:按Win+X打开设备管理器,展开“磁盘驱动器”,双击硬盘,切到“详细信息”选项卡,属性列表里选“SCSI设备标识”或“硬件Id”,能翻到一些身份信息。但说实话,这个窗口对普通用户很不友好,字段晦涩,序列号也不一定完整显示。
查硬盘序列号,图形界面里最明显好用的是CrystalDiskInfo。打开软件顶部就显示型号、固件版本、序列号,还顺带把健康状态、通电时间、温度都给出了。做二手硬盘检测、跑售后的时候,我基本都是直接开这个工具。它的缺点是得下载安装,不适合在客户机器上临时查看;真要在不装任何软件的情况下查,还是得回到命令行。
3. 命令行查询:一条命令搞定,信息更全
命令行是我现在的主力方式。只要机器能打开CMD或PowerShell,三类信息各条命令就能拿到,还能把结果直接重定向到文件里,方便批量汇总。这一节我把常用命令逐个拆开讲,顺便解释为什么某些命令会有坑。
3.1 设备序列号:WMIC和PowerShell两种写法
打开CMD,直接敲下面这条,拿到的就是整机序列号:
wmic csproduct get serialnumber想同时看到机器型号可以写成:
wmic csproduct get name, serialnumber如果只想看机箱/底座的序列号,也就是桌面主机机箱上的那串,可以换成:
wmic systemenclosure get serialnumber笔记本上这两个命令返回的通常是同一个值,但品牌台式机上,机箱序列号和整机序列号理论上可能不同,登记时按你资产表里的字段定义选一个就行。
这里必须提醒一句:**WMIC这条命令在较新的Windows 11和Windows Server 2025里已经默认不存在了。**微软这些年一直在推进用PowerShell替代WMIC,我从Windows 11 24H2开始已经养成了尽量不用WMIC的习惯。PowerShell里对应的是CIM查询:
Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object -ExpandProperty SerialNumber或者看机箱序列号:
Get-CimInstance -ClassName Win32_SystemEnclosure | Select-Object -ExpandProperty SerialNumber两类查询都不强制要求管理员权限,但建议还是以管理员身份运行命令行窗口,免得遇到个别环境策略限制读不到WMI。
3.2 MAC地址怎么查:getmac最清晰,ipconfig最通用
“mac地址怎么查”是网上问得最多的关键词。最通用的是ipconfig /all,在CMD里运行后,每个网卡段落里找“物理地址”那一行就是MAC。这个命令所有Windows版本都有,问题在于输出很长,网卡一多看到眼花。
我更推荐getmac:
getmac /v /fo list/v显示详细信息,/fo list改成竖排格式,会把连接名和对应的MAC地址排在一起,比ipconfig /all干净很多。如果只要纯文本好做后续处理,可以加/fo csv:
getmac /fo csv /vPowerShell里还能只显示物理网卡,过滤掉虚拟网卡:
Get-NetAdapter -Physical | Select-Object Name, MacAddress, Status加-Physical参数后,WSL虚拟网卡、Hyper-V虚拟交换机、各种Miniport虚拟设备基本都被过滤掉了,剩下的就是真正插在机器上的有线、无线网卡。如果还想看网卡连接状态,可以再加个Where-Object { $_.Status -eq 'Up' },只输出正在联网的网卡。
3.3 硬盘序列号怎么查:注意返回值里的“乱序”陷阱
查硬盘物理序列号,经典命令是:
wmic diskdrive get model, serialnumber输出里Model是硬盘型号,SerialNumber是序列号。但这个序列号有个著名的坑:对SATA硬盘来说,Windows通过SCSI指令回读ATA信息时,序列号字符会出现按16位字倒序的情况,所以WMIC返回的字符串经常看着像“字符顺序不对”的乱码,未必和盘体标签上印的一致。这不是硬盘坏了,也不是命令错了,而是接口转换带来的字节序问题。
遇到这种情况,优先用PowerShell的存储接口看:
Get-PhysicalDisk | Select-Object FriendlyName, SerialNumber, MediaTypeGet-PhysicalDisk走的是Windows存储管理API,返回的序列号通常比WMIC规整得多,不用再做额外的字符顺序修正。想确认到底哪一个是盘体标签上的原始序列号,装上CrystalDiskInfo对照一眼就清楚了。
顺带再强调一次:vol C:返回的是卷序列号,不是硬盘物理序列号。做硬盘资产登记、跑保修,一律以盘体标签或上面这些命令输出为准。
4. 批处理和脚本化:“三十秒收集一台”的实战做法
单台机器查完了,接下来才是真正拉开差距的场景——几十台机器,一张表,半天交。手抄是不可能手抄的,我一般是直接跑脚本,让每台机器自己生成一个文本文件,再合并进Excel。这里给出一套可以直接复制的方案。
4.1 一个bat脚本导出本机信息
把这个脚本存成collect_info.bat,双击或管理员运行,会在当前目录生成一个以计算机名命名的文本文件:
@echo off setlocal set "output=PC_%COMPUTERNAME%_info.txt" echo 计算机名: %COMPUTERNAME% > "%output%" echo 查询时间: %date% %time% >> "%output%" echo. >> "%output%" echo [设备序列号] >> "%output%" wmic csproduct get serialnumber >> "%output%" 2>nul echo. >> "%output%" echo [MAC地址] >> "%output%" getmac /fo list /v >> "%output%" 2>nul echo. >> "%output%" echo [硬盘序列号] >> "%output%" wmic diskdrive get model, serialnumber >> "%output%" 2>nul echo 结果已保存到: %output%注意几个细节。第一,文件保存成bat时,如果里面有中文,建议用ANSI编码保存,否则在部分CMD环境里会显示乱码;实在嫌麻烦,把输出内容里的中文提示全部改成英文。第二,>>是追加写入,注意不要漏,否则后面的内容会覆盖前面的。第三,如果目标机器已经装新版Windows、没有WMIC,wmic那几行会提示错误,虽然不影响整体运行,但输出文件里会留下错误信息,所以更推荐下面这个PowerShell版本。
4.2 PowerShell脚本更省心:结构清晰、结果规整
PowerShell脚本对信息结构控制更强,还可以把虚拟网卡过滤掉、把多块硬盘的序列号合并到一行。存成collect_info.ps1然后运行:
$computer = $env:COMPUTERNAME $serial = (Get-CimInstance -ClassName Win32_ComputerSystemProduct).SerialNumber $macs = (Get-NetAdapter -Physical | Where-Object Status -eq 'Up' | Select-Object -ExpandProperty MacAddress) -join ' ; ' $disks = (Get-PhysicalDisk | ForEach-Object { $_.FriendlyName + ' [' + $_.SerialNumber + ']' }) -join ' ; ' [PSCustomObject]@{ 计算机名 = $computer 设备序列号 = $serial MAC地址 = $macs 硬盘序列号 = $disks } | Format-List想保存成文件,把最后的Format-List改成:
} | Out-String | Set-Content -Path "PC_${computer}_info.txt"如果公司电脑默认禁止运行脚本,右键开始菜单打开“Windows PowerShell(管理员)”,先执行一次:
Set-ExecutionPolicy -Scope Process Bypass再运行脚本即可。这个设置只对当前进程生效,不会改变系统全局策略,不影响安全要求。
4.3 批量收集多台机器的方向和注意点
如果机器都在本机,脚本思路就够用了。跨机器收集,大概有两类做法。
一类是传统WMI远程:wmic /node:"目标机器名" csproduct get serialnumber,前提是目标机器开启远程WMI、当前账号有管理员权限、防火墙放行。WMIC本身被淘汰后,这套老办法会越来越不好使。另一类是PowerShell远程:
Invoke-Command -ComputerName PC001 -ScriptBlock { $serial = (Get-CimInstance Win32_ComputerSystemProduct).SerialNumber $mac = (Get-NetAdapter -Physical | Where-Object Status -eq 'Up').MacAddress [PSCustomObject]@{ Computer = $env:COMPUTERNAME; SN = $serial; MAC = $mac } }PowerShell远程需要目标机器启用WinRM,通常在域环境里顺手(Enable-PSRemoting可以快速开启)。真做几十台机器批量收集时,我最常碰到的反倒不是命令本身出错,而是Excel合并时空格、换行符被带进去,所以后续处理统一用TRIM清理一下是必须的。
5. 常见问题与排查技巧实录
这一节是我踩坑最密集的地方,直接用速查表加经验总结的方式列出,方便你遇到问题对号入座。
5.1 常见问题速查表
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 提示“wmic不是内部或外部命令” | 新版本Windows已移除WMIC组件 | 改用Get-CimInstance、Get-PhysicalDisk等PowerShell命令 |
| 查询序列号提示“拒绝访问” | 权限不足,或安全软件拦截WMI查询 | 以管理员身份运行CMD/PowerShell,或临时加白名单 |
ipconfig /all列出一堆网卡 | 虚拟网卡、虚拟WiFi、蓝牙等都在列表里 | 用Get-NetAdapter -Physical过滤物理网卡 |
| WMIC返回的硬盘序列号看着像乱序 | SATA/SCSI读取字节序问题 | 改用Get-PhysicalDisk,或用CrystalDiskInfo对照确认 |
| 设备序列号显示“To be filled by O.E.M.” | 组装机、工程板,BIOS未写入有效序列号 | 用主板序列号、UUID或MAC地址作为替代标识 |
vol C:的序列号和硬盘标签对不上 | 卷序列号不是硬盘物理序列号 | 别用它做硬盘资产登记,改用Get-PhysicalDisk |
| bat脚本输出中文乱码 | 文件编码和CMD代码页不一致 | bat用ANSI保存,或在CMD里先执行chcp 65001 |
| 双硬盘机器分不清哪块盘对应哪个序列号 | Win32_DiskDrive的Index和盘符对应关系混乱 | 用磁盘管理确认盘符和磁盘编号,再按盘型号匹配 |
5.2 避免踩坑的几条心得
序列号这种东西,最怕的不是查不到,而是查到之后抄错。我个人的习惯是:所有序列号一律从命令行输出直接复制,绝对不靠眼睛看屏幕手动敲。硬盘序列号里的0和O、1和l长得特别像,手动抄一遍,错误率比你想象的高得多。
另外,登记到Excel时我会统一做三件事:去首尾空格、转成大写、保持整列文本格式。这样做的原因是,不同机器返回的序列号经常带多余空格,直接用VLOOKUP匹配的时候会莫名其妙对不上;序列号大小写不敏感,但为了后续人力比对,统一大写最省心。写入Excel时把单元格格式设成文本,防止像“000123”这类值被自动转成数字丢前导零。
品牌机的设备序列号还有个用法:拿到后可以直接去对应厂商官网的保修查询页验证一下。我每次做资产盘点的最后一步,都会随机抽两三台机器,拿设备序列号查一遍保修状态。这既是验证序列号有没有抄错,也是顺手把过保设备标记出来,下一年预算申请的时候直接有依据。
最后再分享一个小技巧:如果是帮别人远程查序列号,对方不熟悉命令行,可以让对方按下Win + R,输入cmd回车,然后把下面这一整行粘贴进去:
wmic csproduct get serialnumber && getmac /v /fo list一条命令同时输出设备序列号和MAC地址,对方只需要把窗口里的内容截图发给你。硬盘序列号再单独补一条:
wmic diskdrive get model, serialnumber这三步已经覆盖了绝大多数“帮同事远程查配置”的场景。碰到没有WMIC的新系统,就改成PowerShell,把Get-CimInstance和Get-PhysicalDisk连起来跑,效果完全一样。
这几年我慢慢养成一个习惯:但凡要登记新设备,第一件事就是把设备序列号、MAC地址、硬盘序列号拷进资产表,统一格式后再拿序列号去厂商页面核验一遍。真到要按序列号找保修、追设备、排查网络冲突的时候,当初那五分钟整理下来的数据会非常值钱。把这套命令和习惯保留下来,下次再有人问你“计算机设备序列号怎么查”,你就知道该让他怎么做了。