VBS脚本写的Windows硬件检测工具分享
Windows  /  管理员 发布于 4年前   369
Const MyName = "Windows硬件检视工具(测试版) --by:Rex.Pack(雷克斯.派)"If Not LCase(Replace(WScript.FullName, WScript.Path & "\", "")) = "cscript.exe" ThenSet 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.OS2.CPU3.主板4.内存5.显卡6.硬盘"Echo " 次级组 B: 7.USB8.缓存9.网卡"Echo " 酱油组 C: 10.BIOS11.声卡电池(12.内部 13.便携)"Echo "[测试CPU]"Echo " 测试组 D: 14.变量幂次方运算15.字符叠合16.加法计算17.叠加计算"End SubSub Main()Print ">": GetNum = Trim(InPut)With SDIf .Exists(GetNum) ThenIf IsNumeric(GetNum) ThenEcho Eval("PC." & .Item(GetNum))ElseArrLU = Split(.Item(GetNum), "-")For L = ArrLU(0) To ArrLU(1)Echo Eval("PC." & .Item(CStr(L)))NextEnd IfElseEcho "#不支持的命令"End IfEnd WithIf Not Err.Number = 0 Then Echo ">X": Err.ClearCall MainEnd Sub'DDCClass BaseStrPrivate StrsPrivate Sub Class_Initialize()Strs = ""End SubPrivate Sub Class_Terminate()Call ClsEnd SubPublic Sub Cls()Strs = EmptyEnd SubPublic Property Let I(ByVal Str)If Left(Str, 1) = "☆" Then Str = Str & String(80, "=")Strs = Strs & vbCrLf & StrEnd PropertyPublic Default Property Get I()I = StrsClsEnd PropertyEnd ClassClass BasePCPrivate DPSPrivate Sub Class_Initialize()DPS = 200End SubPrivate Sub Class_Terminate()DPS = EmptyEnd SubFunction S1()S1 = "变量幂次方运算 " & DPS & "万次用时:" & RT("TestVar = I ^ 2", DPS * 10000)End FunctionFunction S2()S2 = "字符叠合 " & DPS & "000次用时:" & RT("TestVar = TestVar & vbTab", DPS * 1000)End FunctionFunction S3()S3 = "加法计算 " & DPS & "万次用时:" & RT("TestVar = 86 + 32", DPS * 10000)End FunctionFunction S4()S4 = "叠加计算 " & DPS & "万次用时:" & RT("TestVar = TestVar + I", DPS * 10000)End FunctionPrivate Function RT(ByVal MathExp, ByVal Num)Dim NowTimer, NewTimer, TestVarNowTimer = TimerFor I = 1 To NumExeCute MathExpNextNewTimer = FormatNumber((Timer - NowTimer) * 1000, 3, True, , False) & "ms"RT = NewTimerTestVar = EmptyEnd FunctionFunction BIOS()On Error Resume NextS.I = "☆[BIOS]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_BIOS")With TempObjS.I = "┣厂商:" & .ManufacturerS.I = "┇日期:" & .ReleaseDateS.I = "┇OEM 版本:" & .VersionS.I = "┇BIOS 版本:" & .SMBIOSBIOSVersionS.I = "┇Major版本:" & .SMBIOSMajorVersionS.I = "┇状态:" & .StatusEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"BIOS = SEnd FunctionFunction OS()On Error Resume NextS.I = "☆[操作系统]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj in WMI.InstancesOf("Win32_OperatingSystem")With TempObjS.I = "┣标签 :" & .CaptionS.I = "┇CSDV :" & .CSDVersionS.I = "┇版本 :" & .VersionS.I = "┇RAM识别:" & .TotalVisibleMemorySize / 1024 & "MB"S.I = "┇RAM可用:" & .FreePhysicalMemory / 1024 & "MB"End WithNextS.I = "┗━━━━━━━━━━━━━┉"OS = SEnd FunctionFunction Board()On Error Resume NextS.I = "☆[主板]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_BaseBoard")With TempObjS.I = "┣标签:" & .CaptionS.I = "┇编号:" & .ProductS.I = "┇序号:" & .SerialNumber S.I = "┇名称:" & .NameS.I = "┇版本:" & .VersionS.I = "┇厂商:" & .ManufacturerS.I = "┇状态:" & .StatusEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"Board = SEnd FunctionFunction CPU()On Error Resume NextS.I = "☆[CPU]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_Processor")With TempObjMCS = .MaxClockSpeedCCS = .CurrentClockSpeedIf MCS Mod 2 = 1 Then MCS = CCS + 1If CCS Mod 2 = 1 Then CCS = CCS + 1If CCS = MCS ThenSet SRP = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")SRP.GetDWORDValue &H80000002, "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "~MHz", OCSet SRP = NothingElseOC = CCSEnd IfIf OC Mod 2 = 1 Then OC = OC + 1FC = OC - MCSIf FC > +10 Then OCLC = "超"If FC < -10 Then OCLC = "降"OCLC = OCLC & "频比率:" & FormatPercent(FC / MCS, True, True)S.I = "┣CPU 名称:" & Trim(.Name)S.I = "┇CPU 架构:" & .DescriptionS.I = "┇制造厂商:" & .ManufacturerS.I = "┇插口规格:" & .SocketDesignationS.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, " & OCLCS.I = "┇原始频率:" & MCS & " MHz"S.I = "┇CPU占用%:" & .LoadPercentage & "%"End WithNextS.I = "┗━━━━━━━━━━━━━┉"CPU = SEnd FunctionFunction CacheMemory()On Error Resume NextS.I = "☆[缓存内存]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_CacheMemory")With TempObjIf .MaxCacheSize > 0 ThenSelect Case .PurposeCase "L1 Cache" AddStr = "(+DataBit)"Case ElseEnd SelectS.I = "┇作用位:" & .Purpose & " ID:" & .DeviceID & ":" & .MaxCacheSize & "KB" & AddStrAddStr = ""End IfEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"CacheMemory = SEnd FunctionFunction Memory()On Error Resume NextTempArr = 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 TempObjS.I = "┣名称/标签:" & .Name & "/" & .CaptionS.I = "┇BL :" & .BankLabelS.I = "┇槽 :" & .DeviceLocatorS.I = "┇容量 :" & .Capacity / 1048576 & "MB"S.I = "┇类型 :" & TempArr(.MemoryType)S.I = "┇速率 :" & .Speed & "MHz"S.I = "┇制造商 :" & .ManufacturerS.I = "┇热插拔 :" & IIf(.HotSwappable = True, True, False)S.I = "┇总位宽 :" & .TotalWidthS.I = "┇数据位宽 :" & .DataWidthS.I = "┇部分序号 :" & .PartNumberEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"Memory = SEnd FunctionFunction Video()On Error Resume NextTempArr1 = 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 TempObjS.I = "┣接口 :" & TempArr1(.VideoArchitecture)S.I = "┇名称 :" & .NameS.I = "┇标签 :" & .CaptionS.I = "┇ID :" & .DeviceIDS.I = "┇GPU :" & .VideoProcessorS.I = "┇制造商 :" & .AdapterCompatibilityS.I = "┇物理显存 :" & .AdapterRAM / 1048576 & "MB"S.I = "┇扫描模式 :" & IIf(.CurrentScanMode = False, False, TempArr2(.CurrentScanMode))S.I = "┇分辨率 :" & .CurrentHorizontalResolution & " x " & .CurrentVerticalResolutionS.I = "┇色位盘 :" & .CurrentBitsPerPixel & "Bit"S.I = "┇刷新率 :" & .CurrentRefreshRate & "Hz" & "(" & .MinRefreshRate & "-" & .MaxRefreshRate& ")"S.I = "┇驱动版本 :" & .DriverVersionEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"Video = SEnd FunctionFunction Disk()On Error Resume NextS.I = "☆[硬盘]"For Each TempObj In WMI.InstancesOf("Win32_DiskDrive")With TempObjS.I = "┏[磁盘:" & .Index & "]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"S.I = "┇名称 :" & .NameS.I = "┇标签 :" & .CaptionS.I = "┇接口 :" & .InterfaceTypeS.I = "┇制造商 :" & .ManufacturerS.I = "┇序号 :" & .SerialNumberS.I = "┇介质描述:" & .Description & "" & "┇介质类型:" & .MediaTypeS.I = "┇柱面数 :" & .TotalCylinders & " " & "┇磁头数 :" & .TotalHeadsS.I = "┇标准容量:" & FormatNumber(.Size / 1000000000, 2, True) & "GB" & "" & "┇实际容量:" & FormatNumber(.Size / 1073741824, 2, True) & "GB"S.I = "┇分区数量:" & .PartitionsS.I = "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"S.I = "┣[分区]┳━━━┳━━━━━━━┳━━━━━━━━━━━┳━━━━━┉"S.I = "┇ 索引┇主分区┇容量(GB)┇块(大小x数量)┇属性"S.I = "┣━━━╋━━━╋━━━━━━━╋━━━━━━━━━━━╋━━━━━┉"For Each TempObj0 In WMI.InstancesOf("Win32_DiskPartition")If .Index = TempObj0.DiskIndex ThenS.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 IfNextS.I = "┣━━━┻━━━┻━━━━━━━┻━━━━━━━━━━━┻━━━━━┉"S.I = "┣[扇区]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"S.I = "┇磁道扇区:" & .SectorsPerTrackS.I = "┇扇区大小:" & .BytesPerSectorS.I = "┇总扇区数:" & .TotalSectorsS.I = "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"End WithNextTempArr = Split("未知 可移动磁盘 本地磁盘 网络驱动器 光盘 RAM磁盘 ")S.I = "┏[分区信息]━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"For Each TempObj1 In CreateObject("Scripting.FileSystemObject").DrivesWith TempObj1If .IsReady ThenPTS = Int(.FreeSpace / .TotalSize * 100)S.I = "┇盘符:" & .DriveLetter & " 文件系统:" & .FileSystem & "类型:" & TempArr(.DriveType) & "卷标:" & .VolumeNameS.I = "┇" & "空闲率:" & PTS & "%" & String((100 - PTS) / 5, "■") & String(PTS / 5, "□")ElseS.I = "┇盘符:" & .DriveLetter & "磁盘未准备好!"S.I = "┇" & "空闲率:0%" & "≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡"End IfEnd WithNextS.I = "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┉"Disk = SEnd FunctionFunction Sound()On Error Resume NextS.I = "☆[声卡]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_SoundDevice")With TempObjS.I = "┣名称/标签:" & .Name & "/" & .CaptionS.I = "┇ID :" & .DeviceIDS.I = "┇制造商 :" & .ManufacturerEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"Sound = SEnd FunctionFunction NetWork()On Error Resume NextS.I = "☆[网卡]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.ExecQuery("Select * from Win32_NetworkAdapter Where PhysicalAdapter = 'True'")With TempObjS.I = "┣[网卡:" & Space(3 - Len(.Index)) & .Index & "]━━━━━━━━┉"S.I = "┇标签 :" & .CaptionS.I = "┇PNPDID:" & .PNPDeviceIDS.I = "┇制造商:" & .ManufacturerS.I = "┇速率 :" & IIf(TypeName(.Speed) = "Null", False, .Speed / 10000 & "bps")S.I = "┇启用 :" & .NetEnabledS.I = "┇服务名:" & .ServiceNameEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"NetWork = SEnd FunctionFunction Battery()On Error Resume NextTempArr1 = Split(" 放电 交流电 充满 低 临界 充电 充电>高 充电>低 充电>临界 未定义 部分充电")TempArr2 = Split(" 其他 未知 铅酸 镉镍 镍金属氢化物 锂离子 锌空气 锂聚合物")S.I = "☆[内部电池]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_Battery")With TempObjS.I = "┣名称/标签:" & .Name & "/" & .CaptionS.I = "┇ID :" & .DeviceIDS.I = "┇PNPDID :" & .PNPDeviceIDS.I = "┇充电时间 :" & .BatteryRechargeTimeS.I = "┇状态 :" & TempArr1(.BatteryStatus)S.I = "┇材料 :" & TempArr2(.Chemistry)End WithNextS.I = "┗━━━━━━━━━━━━━┉"Battery = SEnd FunctionFunction PortableBattery()On Error Resume NextTempArr1 = Split(" 其他 未知 充满 低 临界 充电 充电>高 充电>低 充电>临界 未定义 部分充电")TempArr2 = Split(" 其他 未知 铅酸 镉镍 镍金属氢化物 锂离子 锌空气 锂聚合物")S.I = "☆[便携电池]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_PortableBattery")With TempObjS.I = "┣名称/标签:" & .Name & "/" & .CaptionS.I = "┇ID :" & .DeviceIDS.I = "┇PNPDID :" & .PNPDeviceIDS.I = "┇制造商 :" & .ManufacturerS.I = "┇预计剩余 :" & .EstimatedChargeRemainingS.I = "┇预计时间 :" & .EstimatedRunTimeS.I = "┇电源管理 :" & .PowerManagementSupportedS.I = "┇位置 :" & .LocationS.I = "┇智能电池 :" & .SmartBatteryVersionS.I = "┇材料 :" & TempArr2(.Chemistry)End WithNextS.I = "┗━━━━━━━━━━━━━┉"PortableBattery = SEnd FunctionFunction USB()On Error Resume NextS.I = "☆[USB坞]"S.I = "┏━━━━━━━━━━━━━┉"For Each TempObj In WMI.InstancesOf("Win32_USBController")With TempObjS.I = "┣标签 :" & .CaptionS.I = "┇ID :" & .DeviceIDS.I = "┇PNPDID:" & .PNPDeviceIDS.I = "┇制造商:" & .ManufacturerEnd WithNextS.I = "┗━━━━━━━━━━━━━┉"USB = SEnd FunctionEnd Class'----'输出Sub Print(ByVal Texts)WScript.StdOut.Write TextsEnd SubSub Echo(ByVal GEOM_TempData)WScript.Echo GEOM_TempDataEnd 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.ReadLineEnd 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
运行效果:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号