VBS脚本写的Windows硬件检测工具分享
导读:收集整理的这篇文章主要介绍了VBS脚本写的Windows硬件检测工具分享,觉得挺不错的,现在分享给大家,也给大家做个参考。 Const MyName = "Windows硬件检视工具(测...
收集整理的这篇文章主要介绍了VBS脚本写的Windows硬件检测工具分享,觉得挺不错的,现在分享给大家,也给大家做个参考。 Const MyName = "Windows硬件检视工具(测试版) --by:Rex.Pack(雷克斯.派)"If Not LCase(Replace(WScript.FullName, WScript.Path &
"\", "")) = "cscript.exe" Then Set WS = CreateObject("WScript.Shell") WS.Run "CMD /c mode con: cols=115 &
Color 0A &
TITle " &
MyName &
" &
CScript //noLOGo """ &
WScript.ScriptFullName &
"""" WScript.QuitEnd If'----初始化Set SD = CreateObject("Scripting.Dictionary") SD.COMpareMode = vbTextCompareSet S = New BaseStrSet PC = New BasePCSet WMI = GetObject("Winmgmts:{
imPErsonationLevel=impersonate}
!\\.\root\cimv2")CmdArr = Split(" OS CPU Board Memory Video disk usb CacheMemory NetWork BIOS Sound Battery PortableBattery" &
" S1 S2 S3 S4")With SD .Add "?", "Call Menu" .Add "e", "WScript.Quit" For I = 1 To 17 .Add CStr(I), CmdArr(I) Next .Add "a", "1-6" .Add "b", "7-9" .Add "c", "10-13" .Add "d", "14-17"End WithEcho MyNameCall MenuCall Main'----COSub Menu() Echo "[设备列表]" Echo " 常用组 A: 1.OS 2.CPU 3.主板 4.内存 5.显卡 6.硬盘" Echo " 次级组 B: 7.USB 8.缓存 9.网卡" Echo " 酱油组 C: 10.BIOS 11.声卡 电池(12.内部 13.便携)" Echo "[测试CPU]" Echo " 测试组 D: 14.变量幂次方运算 15.字符叠合 16.加法计算 17.叠加计算"End SubSub Main() PRint ">
": GetNum = Trim(InPut) With SD If .Exists(GetNum) Then If IsNumeric(GetNum) Then Echo Eval("PC." &
.Item(GetNum)) Else ArrLU = Split(.Item(GetNum), "-") For L = ArrLU(0) To ArrLU(1) Echo Eval("PC." &
.Item(CStr(L))) Next End If Else Echo "#不支持的命令" End If End With If Not Err.Number = 0 Then Echo ">
X": Err.Clear Call MainEnd Sub'DDCClass BaseStr Private Strs Private Sub Class_Initialize() Strs = "" End Sub Private Sub Class_Terminate() Call Cls End Sub Public Sub Cls() Strs = Empty End Sub Public Property Let I(ByVal Str) If Left(Str, 1) = "☆" Then Str = Str &
String(80, "=") Strs = Strs &
vbCrLf &
Str End Property Public Default Property Get I() I = Strs Cls End PropertyEnd ClassClass BasePC Private DPS Private Sub Class_Initialize() DPS = 200 End Sub Private Sub Class_Terminate() DPS = Empty End Sub Function S1() S1 = "变量幂次方运算 " &
DPS &
"万次用时:" &
RT("testVAR = I ^ 2", DPS * 10000) End Function Function S2() S2 = "字符叠合 " &
DPS &
"000次用时:" &
RT("TestVar = TestVar &
vBTab", DPS * 1000) End Function Function S3() S3 = "加法计算 " &
DPS &
"万次用时:" &
RT("TestVar = 86 + 32", DPS * 10000) End Function Function S4() S4 = "叠加计算 " &
DPS &
"万次用时:" &
RT("TestVar = TestVar + I", DPS * 10000) End Function Private Function RT(ByVal MathExp, ByVal Num) Dim NowTimer, NewTimer, TestVar NowTimer = Timer For I = 1 To Num ExeCute MathExp Next NewTimer = FormatNumber((Timer - NowTimer) * 1000, 3, True, , False) &
"ms" RT = NewTimer TestVar = Empty End Function Function BIOS() On Error Resume Next S.I = "☆[BIOS]" S.I = "┏━━━━━━━━━━━━━┉" For each TempObj In WMI.InstancesOf("Win32_BIOS") With TempObj S.I = "┣厂商 :" &
.Manufacturer S.I = "┇日期 :" &
.ReleaseDate S.I = "┇OEM 版本 :" &
.Version S.I = "┇BIOS 版本 :" &
.SMBIOSBIOSVersion S.I = "┇Major版本 :" &
.SMBIOSMajorVersion S.I = "┇状态 :" &
.status End With Next S.I = "┗━━━━━━━━━━━━━┉" BIOS = S End Function Function OS() On Error Resume Next S.I = "☆[操作系统]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj in WMI.InstancesOf("Win32_operatingSystem") With TempObj S.I = "┣标签 :" &
.Caption S.I = "┇CSDV :" &
.CSDVersion S.I = "┇版本 :" &
.Version S.I = "┇RAM识别:" &
.totalVisibleMemorySize / 1024 &
"MB" S.I = "┇RAM可用:" &
.FreePhysicalMemory / 1024 &
"MB" End With Next S.I = "┗━━━━━━━━━━━━━┉" OS = S End Function Function Board() On Error Resume Next S.I = "☆[主板]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_BaseBoard") With TempObj S.I = "┣标签:" &
.Caption S.I = "┇编号:" &
.Product S.I = "┇序号:" &
.SerialNumber S.I = "┇名称:" &
.Name S.I = "┇版本:" &
.Version S.I = "┇厂商:" &
.Manufacturer S.I = "┇状态:" &
.Status End With Next S.I = "┗━━━━━━━━━━━━━┉" Board = S End Function Function CPU() On Error Resume Next S.I = "☆[CPU]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_Processor") With TempObj MCS = .MaxclockSpeed CCS = .currentClockSpeed If MCS Mod 2 = 1 Then MCS = CCS + 1 If CCS Mod 2 = 1 Then CCS = CCS + 1 If CCS = MCS Then Set SRP = GetObject("winmgmts:{
impersonationLevel=impersonate}
!\\.\root\default:StdRegProv") SRP.GetDWORDValue &
H80000002, "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "~MHz", OC Set SRP = Nothing Else OC = CCS End If If OC Mod 2 = 1 Then OC = OC + 1 fc = OC - MCS If FC >
+10 Then OCLC = "超" If FC -10 Then OCLC = "降" OCLC = OCLC &
"频比率:" &
FormatPercent(FC / MCS, True, True) S.I = "┣CPU 名称:" &
Trim(.Name) S.I = "┇CPU 架构:" &
.Description S.I = "┇制造厂商:" &
.Manufacturer S.I = "┇插口规格:" &
.SocketDesignation S.I = "┇CPU 数量:" &
.CpuStatus &
" " &
String(.CpuStatus, "※") S.I = "┇核心数量:" &
.NumberOfCores &
" " &
String(.NumberOfCores, "∷") S.I = "┇线程数量:" &
.NumberOfLogicalProcessors &
" " &
String(.NumberOfLogicalProcessors, "≈") S.I = "┇地址位宽:" &
.AddressWidth &
" Bit" S.I = "┇数据位宽:" &
.DataWidth &
" Bit" S.I = "┇CPU 电压:" &
.CurrentVoltage / 10 &
"V" S.I = "┇外部频率:" &
.ExtClock &
" MHz" S.I = "┇当前频率:" &
OC &
" MHz, " &
OCLC S.I = "┇原始频率:" &
MCS &
" MHz" S.I = "┇CPU占用%:" &
.LoadPercentage &
"%" End With Next S.I = "┗━━━━━━━━━━━━━┉" CPU = S End Function Function CacheMemory() On Error Resume Next S.I = "☆[缓存内存]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_CacheMemory") With TempObj If .MaxCacheSize >
0 Then Select Case .Purpose Case "L1 Cache" AddStr = "(+DataBit)" Case Else End Select S.I = "┇作用位:" &
.Purpose &
" ID:" &
.DeviceiD &
":" &
.MaxCacheSize &
"KB" &
AddStr AddStr = "" End If End With Next S.I = "┗━━━━━━━━━━━━━┉" CacheMemory = S End Function Function Memory() On Error Resume Next TempArr = Split("Unknown Other DRAM Synchronous-DRAM Cache-DRAM EDO EDRAM VRAM SRAM RAM rom Flash EEPROM FEPROM EPROM cdrAM 3DRAM SDRAM SGRAM RDRAM DDR DDR-2") S.I = "☆[内存]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_PhysicalMemory") With TempObj S.I = "┣名称/标签:" &
.Name &
"/" &
.Caption S.I = "┇BL :" &
.BankLabel S.I = "┇槽 :" &
.DeviceLocator S.I = "┇容量 :" &
.Capacity / 1048576 &
"MB" S.I = "┇类型 :" &
TempArr(.MemoryType) S.I = "┇速率 :" &
.Speed &
"MHz" S.I = "┇制造商 :" &
.Manufacturer S.I = "┇热插拔 :" &
IIf(.HotSwappable = True, True, False) S.I = "┇总位宽 :" &
.TotalWidth S.I = "┇数据位宽 :" &
.DataWidth S.I = "┇部分序号 :" &
.PartNumber End With Next S.I = "┗━━━━━━━━━━━━━┉" Memory = S End Function Function Video() On Error Resume Next TempArr1 = Split(" 其他 未知 CGA EGA VGA SVGA MDA HGC MCGA 8514A XGA Linear Frame Buffer" &
Space(160 - 14) &
"PC-98") TempArr2 = Split(" 其他 未知 隔行 逐行") S.I = "☆[显卡]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_VideoController") With TempObj S.I = "┣接口 :" &
TempArr1(.VideoArchitecture) S.I = "┇名称 :" &
.Name S.I = "┇标签 :" &
.Caption S.I = "┇ID :" &
.DeviceID S.I = "┇GPU :" &
.VideoProcessor S.I = "┇制造商 :" &
.AdapterCompatibility S.I = "┇物理显存 :" &
.AdapterRAM / 1048576 &
"MB" S.I = "┇扫描模式 :" &
IIf(.CurrentScanMode = False, False, TempArr2(.CurrentScanMode)) S.I = "┇分辨率 :" &
.CurrentHorizontalResolution &
" x " &
.CurrentVerticalResolution S.I = "┇色位盘 :" &
.CurrentBitsPerPixel &
"Bit" S.I = "┇刷新率 :" &
.CurrentRefreshRate &
"Hz" &
"(" &
.MinRefreshRate &
"-" &
.MaxRefreshRate&
")" S.I = "┇驱动版本 :" &
.DriverVersion End With Next S.I = "┗━━━━━━━━━━━━━┉" Video = S End Function Function Disk() On Error Resume Next S.I = "☆[硬盘]" For Each TempObj In WMI.InstancesOf("Win32_DiskDrive") With TempObj S.I = "┏[磁盘:" &
.Index &
"]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" S.I = "┇名称 :" &
.Name S.I = "┇标签 :" &
.Caption S.I = "┇接口 :" &
.InterfaceType S.I = "┇制造商 :" &
.Manufacturer S.I = "┇序号 :" &
.SerialNumber S.I = "┇介质描述:" &
.Description &
" " &
"┇介质类型:" &
.MediaType S.I = "┇柱面数 :" &
.TotalCylinders &
" " &
"┇磁头数 :" &
.TotalHeads S.I = "┇标准容量:" &
FormatNumber(.Size / 1000000000, 2, True) &
"GB" &
" " &
"┇实际容量:" &
FormatNumber(.Size / 1073741824, 2, True) &
"GB" S.I = "┇分区数量:" &
.Partitions S.I = "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" S.I = "┣[分区]┳━━━┳━━━━━━━┳━━━━━━━━━━━┳━━━━━┉" S.I = "┇ 索引 ┇主分区┇容量(GB) ┇块(大小x数量) ┇属性" S.I = "┣━━━╋━━━╋━━━━━━━╋━━━━━━━━━━━╋━━━━━┉" For Each TempObj0 In WMI.InstancesOf("Win32_DiskPartition") If .Index = TempObj0.DiskIndex Then S.I = "┇ " &
TempObj0.Index &
_ " ┇" &
TempObj0.PrimaryPartition &
_ " ┇" &
FormatNumber(TempObj0.Size / 1073741824, 2, True) &
"GB" &
_ " ┇" &
TempObj0.BlockSize &
"x" &
TempObj0.NumberOfBlocks &
_ " ┇" &
_ TIf(TempObj0.BootPartition, "引导,") &
_ TIf(TempObj0.HiddenSectors, "隐藏,") &
_ TIf(TempObj0.Bootable, "启动.") End If Next S.I = "┣━━━┻━━━┻━━━━━━━┻━━━━━━━━━━━┻━━━━━┉" S.I = "┣[扇区]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" S.I = "┇磁道扇区:" &
.SectorsPerTrack S.I = "┇扇区大小:" &
.BytesPerSector S.I = "┇总扇区数:" &
.TotalSectors S.I = "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" End With Next TempArr = Split("未知 可移动磁盘 本地磁盘 网络驱动器 光盘 RAM磁盘 ") S.I = "┏[分区信息]━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" For Each TempObj1 In CreateObject("Scripting.FileSystemObject").Drives With TempObj1 If .IsReady Then PTS = Int(.FreeSpace / .TotalSize * 100) S.I = "┇盘符:" &
.DriveLetter &
" 文件系统:" &
.FileSystem &
" 类型:" &
TempArr(.DriveType) &
" 卷标:" &
.VolumeName S.I = "┇" &
" 空闲率:" &
PTS &
"% " &
String((100 - PTS) / 5, "■") &
String(PTS / 5, "□") Else S.I = "┇盘符:" &
.DriveLetter &
" 磁盘未准备好!" S.I = "┇" &
" 空闲率:0% " &
"≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡" End If End With Next S.I = "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉" Disk = S End Function Function Sound() On Error Resume Next S.I = "☆[声卡]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_SoundDevice") With TempObj S.I = "┣名称/标签:" &
.Name &
"/" &
.Caption S.I = "┇ID :" &
.DeviceID S.I = "┇制造商 :" &
.Manufacturer End With Next S.I = "┗━━━━━━━━━━━━━┉" Sound = S End Function Function NetWork() On Error Resume Next S.I = "☆[网卡]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.ExecQuery("Select * From Win32_NetworkAdapter Where PhysicalAdapter = 'True'") With TempObj S.I = "┣[网卡:" &
Space(3 - Len(.Index)) &
.Index &
"]━━━━━━━━┉" S.I = "┇标签 :" &
.Caption S.I = "┇PNPDID:" &
.PNPDeviceID S.I = "┇制造商:" &
.Manufacturer S.I = "┇速率 :" &
IIf(TypeName(.Speed) = "Null", False, .Speed / 10000 &
"bps") S.I = "┇启用 :" &
.NetEnabled S.I = "┇服务名:" &
.ServiceName End With Next S.I = "┗━━━━━━━━━━━━━┉" NetWork = S End Function Function Battery() On Error Resume Next TempArr1 = Split(" 放电 交流电 充满 低 临界 充电 充电>
高 充电>
低 充电>
临界 未定义 部分充电") TempArr2 = Split(" 其他 未知 铅酸 镉镍 镍金属氢化物 锂离子 锌空气 锂聚合物") S.I = "☆[内部电池]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_Battery") With TempObj S.I = "┣名称/标签:" &
.Name &
"/" &
.Caption S.I = "┇ID :" &
.DeviceID S.I = "┇PNPDID :" &
.PNPDeviceID S.I = "┇充电时间 :" &
.BatteryRechargeTime S.I = "┇状态 :" &
TempArr1(.BatteryStatus) S.I = "┇材料 :" &
TempArr2(.Chemistry) End With Next S.I = "┗━━━━━━━━━━━━━┉" Battery = S End Function Function PortableBattery() On Error Resume Next TempArr1 = Split(" 其他 未知 充满 低 临界 充电 充电>
高 充电>
低 充电>
临界 未定义 部分充电") TempArr2 = Split(" 其他 未知 铅酸 镉镍 镍金属氢化物 锂离子 锌空气 锂聚合物") S.I = "☆[便携电池]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_PortableBattery") With TempObj S.I = "┣名称/标签:" &
.Name &
"/" &
.Caption S.I = "┇ID :" &
.DeviceID S.I = "┇PNPDID :" &
.PNPDeviceID S.I = "┇制造商 :" &
.Manufacturer S.I = "┇预计剩余 :" &
.EstiMATEdChargeRemaining S.I = "┇预计时间 :" &
.EstimatedRunTime S.I = "┇电源管理 :" &
.PowerManagementSupported S.I = "┇位置 :" &
.Location S.I = "┇智能电池 :" &
.SmartBatteryVersion S.I = "┇材料 :" &
TempArr2(.Chemistry) End With Next S.I = "┗━━━━━━━━━━━━━┉" PortableBattery = S End Function Function USB() On Error Resume Next S.I = "☆[USB坞]" S.I = "┏━━━━━━━━━━━━━┉" For Each TempObj In WMI.InstancesOf("Win32_USBController") With TempObj S.I = "┣标签 :" &
.Caption S.I = "┇ID :" &
.DeviceID S.I = "┇PNPDID:" &
.PNPDeviceID S.I = "┇制造商:" &
.Manufacturer End With Next S.I = "┗━━━━━━━━━━━━━┉" USB = S End FunctionEnd Class'---- '输出 Sub Print(ByVal Texts) WScript.StdOut.Write Texts End Sub Sub Echo(ByVal GEOM_TempData) WScript.Echo GEOM_TempData End Sub '输出:覆盖行,空白长度 Sub PrintC(ByVal Texts, ByVal LenNum) WScript.StdOut.Write Chr(13) &
Texts &
String(LenNum, " ") End Sub '输出,+换行 Sub PrintL(ByVal Texts) WScript.StdOut.WriteLine(Texts) End Sub '输入 Function InPut() InPut = WScript.StdIn.ReadLine End FunctionFunction IIf(ByVal GEOM_tf, ByVal GEOM_T, ByVal GEOM_F) If GEOM_tf = True Then IIF = GEOM_T Else IIF = GEOM_FEnd Function'iif真Function TIf(ByVal GEOM_tf, ByVal GEOM_T) If GEOM_tf = True Then TIF = GEOM_TEnd Function'iif假Function FIf(ByVal GEOM_tf, ByVal GEOM_F) If GEOM_tf = False Then FIF = GEOM_FEnd Function运行效果:
您可能感兴趣的文章:- 自动化下载并检测ftp文件备份的shell脚本
- 用来检测输入的选项$1是否在PATH中的shell脚本
- shell脚本实现实时检测文件变更
- Shell脚本实现检测Cygwin最快的镜像站点
- Linux Shell脚本实现检测tomcat
- Shell脚本实现检测进程是否正在运行
- PowerShell脚本实现检测网络内主机类型
- 脚本批量检测网站是否存活
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: VBS脚本写的Windows硬件检测工具分享
本文地址: https://pptw.com/jishu/610099.html
