一键查看PC机器码

本文档将指导您如何使用提供的批处理脚本来查看您计算机的硬件信息,通常称为“机器码”。

重要提示

为了能够读取所有必要的硬件信息,此脚本 必须 以管理员权限运行。如果不以管理员身份运行,脚本可能会因为权限不足而无法获取某些关键信息,导致生成的信息不完整或执行失败。

操作步骤

  1. 保存脚本:将下面的完整脚本代码复制并保存到一个文件中。请将文件命名为 机器码查看.bat。确保文件扩展名为 .bat 而不是 .txt

  2. 以管理员身份运行

    • 找到您刚刚保存的 机器码查看.bat 文件。
    • 在文件上 右击鼠标
    • 从弹出的菜单中选择 “以管理员身份运行”
  3. 查看结果

    • 脚本运行后,会弹出一个命令行窗口,显示获取到的硬件信息。
    • 您可以直接在窗口中按 回车键 来刷新信息,或按 Ctrl+C 退出。

完整脚本

@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
color 0A

set "OUT=机器码信息.txt"
set "REFRESH_COUNT=0"

:REFRESH
set /a REFRESH_COUNT+=1
title 机器码信息 - 已刷新 !REFRESH_COUNT! 次 @ %date% %time%

rem 生成并直接覆盖输出文件
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass ^
  -Command "$ErrorActionPreference='SilentlyContinue';[Console]::OutputEncoding=[Text.Encoding]::UTF8;$out=$env:OUT;"^
  "& { $sep='===========================================================';"^
  "  Write-Output ('生成时间:' + (Get-Date -Format 'yyyy-MM-dd HH:mm:ss'));"^
  "  Write-Output ('刷新次数:' + $env:REFRESH_COUNT);"^
  "  Write-Output ('计算机名:' + $env:COMPUTERNAME);"^
  "  Write-Output ('用户名:' + $env:USERNAME);"^
  "  Write-Output $sep;"^
  "  $bb   = Get-CimInstance Win32_BaseBoard -ErrorAction SilentlyContinue; if(-not $bb){ $bb=Get-WmiObject Win32_BaseBoard -ErrorAction SilentlyContinue };"^
  "  $cspr = Get-CimInstance Win32_ComputerSystemProduct -ErrorAction SilentlyContinue; if(-not $cspr){ $cspr=Get-WmiObject Win32_ComputerSystemProduct -ErrorAction SilentlyContinue };"^
  "  $cpu  = Get-CimInstance Win32_Processor -ErrorAction SilentlyContinue; if(-not $cpu){ $cpu=Get-WmiObject Win32_Processor -ErrorAction SilentlyContinue };"^
  "  $bios = Get-CimInstance Win32_BIOS -ErrorAction SilentlyContinue; if(-not $bios){ $bios=Get-WmiObject Win32_BIOS -ErrorAction SilentlyContinue };"^
  "  $man=if($bb){$bb.Manufacturer}else{$null}; $prod=if($bb){$bb.Product}else{$null};"^
  "  $printBB= (-not [string]::IsNullOrWhiteSpace($man)) -or (-not [string]::IsNullOrWhiteSpace($prod));"^
  "  if($printBB){ Write-Output '主板:'; if($man){ Write-Output ('            品牌:' + $man) }; if($prod){ Write-Output ('            型号:' + $prod) }; Write-Output $sep };"^
  "  Write-Output '名字'; Write-Output 'Name'; if($cspr){ Write-Output $cspr.Name };"^
  "  Write-Output $sep;"^
  "  Write-Output '硬盘物理序列号___'; Write-Output 'SerialNumber'; $pm=Get-CimInstance Win32_PhysicalMedia -ErrorAction SilentlyContinue; if(-not $pm){ $pm=Get-WmiObject Win32_PhysicalMedia -ErrorAction SilentlyContinue }; if($pm){ foreach($p in $pm){ if($p.SerialNumber){ Write-Output ($p.SerialNumber.Trim()) } } };"^
  "  Write-Output $sep;"^
  "  Write-Output '主板CPU序列号___'; Write-Output 'SerialNumber'; if($cpu){ Write-Output $cpu.SerialNumber };"^
  "  Write-Output $sep;"^
  "  Write-Output '主板BIOS序列号___'; Write-Output 'SerialNumber'; if($bios){ Write-Output $bios.SerialNumber };"^
  "  Write-Output $sep;"^
  "  Write-Output '主板物理序列号___'; $bbsn=if($bb){$bb.SerialNumber}else{$null}; if([string]::IsNullOrWhiteSpace($bbsn)){ Write-Output '没有可用实例。' } else { Write-Output $bbsn };"^
  "  Write-Output $sep;"^
  "  Write-Output '主板UUID'; Write-Output 'UUID'; if($cspr){ Write-Output $cspr.UUID };"^
  "  Write-Output $sep;"^
  "  Write-Output '网卡信息MAC'; $nics=Get-CimInstance Win32_NetworkAdapter -Filter 'PhysicalAdapter=True' -ErrorAction SilentlyContinue; if(-not $nics){ $nics=Get-WmiObject Win32_NetworkAdapter -Filter 'PhysicalAdapter=True' -ErrorAction SilentlyContinue }; foreach($n in $nics){ if($n.MACAddress){ Write-Output ('描述: ' + $n.Name); Write-Output ('物理地址: ' + ($n.MACAddress -replace ':','-')) } };"^
  "  Write-Output $sep;"^
  "  $lines = ipconfig /all; $duid=$lines.Where({$_ -match 'DUID'},'First'); if($duid){ Write-Output ($duid.Trim()) };"^
  "  Write-Output '';"^
  "  Write-Output '物理地址            传输名称'; Write-Output '=================== ==========================================================';"^
  "  $gm = cmd /c getmac; Write-Output $gm;"^
  "  Write-Output $sep;"^
  "  Write-Output 'GPUID'; Write-Output 'Description                       PNPDeviceID'; $gpus=Get-CimInstance Win32_VideoController -ErrorAction SilentlyContinue; if(-not $gpus){ $gpus=Get-WmiObject Win32_VideoController -ErrorAction SilentlyContinue }; foreach($g in $gpus){ $d=$g.Description; $p=$g.PNPDeviceID; if($null -eq $d){$d=''}; if($null -eq $p){$p=''}; if($d.Length -lt 31){ $d=$d.PadRight(31) }; Write-Output ($d + ' ' + $p) };"^
  "  Write-Output $sep;"^
  "  Write-Output 'Caption                          FirmwareRevision'; $dd=Get-CimInstance Win32_DiskDrive -ErrorAction SilentlyContinue; if(-not $dd){ $dd=Get-WmiObject Win32_DiskDrive -ErrorAction SilentlyContinue }; foreach($d in $dd){ $c=$d.Caption; $f=$d.FirmwareRevision; if($null -eq $c){$c=''}; if($null -eq $f){$f=''}; if($c.Length -lt 31){ $c=$c.PadRight(31) }; Write-Output ($c + ' ' + $f) };"^
  "  Write-Output $sep;"^
  "  Write-Output 'MACAddress'; $mac2 = (Get-CimInstance Win32_NetworkAdapterConfiguration -Filter 'IPEnabled=True' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty MACAddress -First 1); if(-not $mac2){ $mac2 = (Get-WmiObject Win32_NetworkAdapterConfiguration -Filter 'IPEnabled=True' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty MACAddress -First 1) }; if($mac2){ Write-Output $mac2 };"^
  "  Write-Output $sep;"^
  "  Write-Output 'ProcessorId'; if($cpu){ Write-Output $cpu.ProcessorId };"^
  "  Write-Output $sep;"^
  "  Write-Output 'RAM'; Write-Output 'SerialNumber'; $mem=Get-CimInstance Win32_PhysicalMemory -ErrorAction SilentlyContinue; if(-not $mem){ $mem=Get-WmiObject Win32_PhysicalMemory -ErrorAction SilentlyContinue }; if($mem){ foreach($m in $mem){ Write-Output $m.SerialNumber } };"^
  "  Write-Output $sep;"^
  "  Write-Output '(回车在控制台刷新显示)' } | Out-File -FilePath $out -Encoding utf8 -Force"

if errorlevel 1 (
  echo 发生错误:无法生成信息。请确认 PowerShell 及 WMI/CIM 可用。
  goto WAIT
)

cls
type "%OUT%"
echo.
echo ── 已刷新 !REFRESH_COUNT! 次,完成于 %date% %time%
echo.

:WAIT
echo (回车刷新,Ctrl+C 退出)
set /p "= " <nul
set /p _=
echo.
goto REFRESH