• 售前

  • 售后

热门帖子
入门百科

vbs获取利用体系及其版本号

[复制链接]
白刃玄衣及 显示全部楼层 发表于 2021-8-19 19:19:05 |阅读模式 打印 上一主题 下一主题
vbs获取操纵体系及其版本号
  1. '**************************************
  2. '*by r05e
  3. '*操作系统及其版本号
  4. '**************************************
  5. strComputer = "."
  6. Set objWMIService = GetObject("winmgmts:" _
  7. & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
  8. Set colOperatingSystems = objWMIService.ExecQuery _
  9. ("Select * from Win32_OperatingSystem")
  10. For Each objOperatingSystem in colOperatingSystems
  11. Wscript.Echo objOperatingSystem.Caption & " " & objOperatingSystem.Version
  12. Next
复制代码
vbs查询体系信息(名称,版本,体系盘,32or64)-wmi
  1. Function X86orX64()
  2. On Error Resume Next
  3. strComputer = "."
  4. Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
  5. Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
  6. For Each objItem in colItems
  7.                
  8.   If InStr(objItem.SystemType, "64") <> 0 Then
  9.    X86orX64 = "x64"  
  10.   Else
  11.    X86orX64 = "x86"
  12.   End If
  13. Next
  14. End Function
  15. Function showOsInfo()
  16. Dim res
  17. On Error Resume Next
  18. strComputer = "."
  19. Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
  20. Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
  21. res ="infoStart"
  22. For Each objItem in colItems
  23.                 res =res & "_" & objItem.Caption               
  24.                 res =res & "_" & objItem.SystemDrive
  25.                 res =res & "_" & objItem.Version
  26.                 'WScript.Echo objItem.OSArchitecture  
  27. Next
  28.         res =res & "_" & X86orX64()
  29.         res =res & "_infoEnd"
  30.         WScript.Echo res
  31. End Function
  32. call showOsInfo()
  33. WScript.Echo "complete!"
复制代码
cmd + vbs +wmi 判断体系级别版本和范例

cmd脚本:
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. rem 本脚本用于确定当前nt5以上框架工作站系统的级别版本和类型,需vbs/wmi 支持
  4. >%temp%\verx.vbs echo Set wmi=GetObject("winmgmts:\\.")
  5. >>%temp%\verx.vbs echo Set operation=wmi.instancesof(^"win32_Operatingsystem^")
  6. >>%temp%\verx.vbs echo For Each sys In operation
  7. >>%temp%\verx.vbs echo   WScript.Echo sys.caption^&","^&sys.Version^&","^&sys.OSArchitecture
  8. >>%temp%\verx.vbs echo Next
  9. set "winver=Unkonw"
  10. for /f "skip=2 delims=, tokens=1,2,3" %%c in ('cscript "%temp%\verx.vbs"') do (
  11. echo %%c,%%d,%%e
  12. echo ===========================================================
  13. for /f "delims=. tokens=1,2" %%i in ("%%d") do (
  14. if %%i.%%j equ 10.0 set "winver=Win_10"
  15. if %%i.%%j equ 6.2 set "winver=Win_8"
  16. if %%i.%%j equ 6.1 set "winver=Win_7"
  17. if %%i.%%j equ 6.0 set "winver=Win_Vista"
  18. if %%i.%%j equ 5.2 set "winver=Win_XP"
  19. if %%i.%%j equ 5.1 set "winver=Win_XP"
  20. if %%i.%%j equ 5.0 set "winver=Win_2K"
  21. )
  22. for /f "delims=- tokens=1" %%i in ("%%e") do (
  23. set "winver=!winver!.%%i"
  24. if %%i equ 32 set "winver=!winver:.%%i=.x86!"
  25. if %%i equ 64 set "winver=!winver:.%%i=.x64!"
  26. )
  27. )
  28. echo !winver!
复制代码
用 vbs 调用 wmi 体现 体系 name 目的是 为了 与 通过 version 得出的体系name对比。
实在单独 获取 version 只需要 ver 下令 配套 for 就可以了,不用再有 第三个外部下令。
而且 version 确定体系name 的方法自己需要参考 ms 的体系name与version列表,有的 server 版与 workstation 版 用一个version,而 xp 更是 有 5.1 5.2 两个version
更乱的是,还有 内部 BuildNumber
cmd 下 调用 wmic 的时间 ,wmic 有一个 bug 就是 在输出 文本流 时,每一行结尾都用 软回车+硬回车 两个符号体现换行,而 软回车符号 会在 脚本中加入 set 的变量设置。
以是,我在用 wmic 的 get 的时间 都会附带一个无用的字段同时 加 /format:csv参数,让无用字段来包含换行符号,制止要收罗的数据字段包含换行符。
看来 你用 findstr 正则的方式解决 还不错,就是如果涉及 其他非数字的字段就要另想办法。
在 没有 wmi 的情况下 ,通过 vbs 获取体系版本,可以通过 vbs 获取 体系 explorer.exe 的文件版本 来确定体系version ,通过 明确体系是否存在 SysWOW64 文件夹 来确定 是否为 x64.
VBS 获取指定电脑的部分信息
  1. Program Name: Get_Remote_PC_Partial_Information.vbs
  2. ----The Code as Below
  3. '--------------------------
  4. 'Author By: Wei_Zhu
  5. 'Creation Date: 2010-03-08
  6. '--------------------------
  7. On Error Resume Next
  8. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  9. Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
  10. Set objExcel = CreateObject("Excel.Application")
  11. Set objWorkbook=objExcel.Workbooks.Add()  'This is add new
  12.   Set objRange = objExcel.Range("A1","E1")  
  13.       objRange.Font.Size = 10
  14.       objrange.Font.Bold = True
  15.       objrange.Font.Name = "Times New Roman"
  16.       objrange.Cells(1).Value="Domain"
  17.       objrange.Cells(2).Value="IP"
  18.       objrange.Cells(3).Value="Manufacturer"
  19.       objrange.Cells(4).Value="Model"
  20.       objrange.Cells(5).Value="Serial Number"  
  21.       objrange.Interior.ColorIndex = 34   'Set BackColor
  22.        objRange.Borders.LineStyle  =  1
  23.       Set objRange = objExcel.ActiveCell.EntireColumn
  24.       objRange.AutoFit()     
  25. '----Auto Fill The Column Width---
  26.       Set objcol = objExcel.Columns("A:E").EntireColumn
  27.       objcol.AutoFit
  28. set ws=createobject("wscript.shell")
  29. set fso=createobject("scripting.filesystemobject")
  30. set folder=fso.getfolder(ws.CurrentDirectory&"/Computer")
  31. Set fc = folder.Files
  32.   For Each f1 in fc
  33.    s = folder&"/" & f1.name
  34.   set ts = fso.OpenTextFile(s, ForReading)
  35.    lint_line =2
  36.    Do While Not ts.AtEndOfStream
  37.   l_ip = ts.ReadLine
  38.   GetPCInfo l_ip,f1.Name,lint_line
  39.   lint_line = lint_line +1
  40.    Loop
  41.    lint_line=0
  42.    ts.Close
  43.   Next
  44.    objExcel.DisplayAlerts  =  False   'Close the Alert
  45. 'objExcel.ActiveWorkBook.Saveas lstg_to_f,-4143
  46. 'msgbox lstg_to_f
  47.    objExcel.ActiveWorkBook.Saveas folder&".xls",-4143
  48.    objExcel.DisplayAlerts = False     ''Close the Save Alert
  49.    objExcel.ActiveWorkbook.Close
  50.    objExcel.DisplayAlerts = False
  51.    objExcel.Application.Quit
  52. Function GetPCInfo(ByVal ip, ByVal l_fn, ByVal l_line)
  53.   'Function GetPCInfo(l_fn,l_line)
  54.   strComputer = ip
  55.   objWMIService = GetObject("winmgmts:" _
  56.     & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
  57.   colItems = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure")
  58.   l_Array = Split(l_fn, ".", -1, 1)
  59.   For Each objItem In colItems
  60.     'MsgBox "Manufacturer: " & objItem.Manufacturer
  61.     '   Msgbox "Product: " & objItem.Product
  62.     '   Msgbox "Serial Number: " & objItem.SerialNumber
  63.     objRange = objExcel.Range("A" & l_line, "E" & l_line)
  64.     objRange.Cells(1).value = l_Array(0)
  65.     objRange.Cells(2).value = ip
  66.     objRange.Cells(3).value = objItem.Manufacturer
  67.     objRange.Cells(4).value = objItem.Model
  68.     objRange.Cells(5).value = objItem.SerialNumber
  69.   Next
  70.   '----Auto Fill The Column Width---
  71.   objcol = objExcel.Columns("A:E").EntireColumn
  72.   objcol.AutoFit()
复制代码
到此这篇关于vbs获取操纵体系及其版本号的文章就先容到这了,更多相关vbs操纵体系信息内容请搜刮脚本之家以前的文章或继承浏览下面的相关文章渴望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作