vbs查询系统信息(名称,版本,系统盘,32or64)-wmi

FunctionX86orX64()
OnErrorResumeNext
strComputer="."
SetobjWMIService=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
SetcolItems=objWMIService.ExecQuery("Select*fromWin32_ComputerSystem",,48)
ForEachobjItemincolItems
		
IfInStr(objItem.SystemType,"64")<>0Then
X86orX64="x64"
Else
X86orX64="x86"
EndIf
Next

EndFunction
FunctionshowOsInfo()
Dimres
OnErrorResumeNext
strComputer="."
SetobjWMIService=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
SetcolItems=objWMIService.ExecQuery("Select*fromWin32_OperatingSystem",,48)
res="infoStart"
ForEachobjItemincolItems
		res=res&"_"&objItem.Caption		
		res=res&"_"&objItem.SystemDrive
		res=res&"_"&objItem.Version
		'WScript.EchoobjItem.OSArchitecture
Next

	res=res&"_"&X86orX64()
	res=res&"_infoEnd"
	WScript.Echores
EndFunction
callshowOsInfo()
WScript.Echo"complete!"

cmd+vbs+wmi判断系统级别版本和类型

cmd脚本:

@echooff
SETLOCALENABLEDELAYEDEXPANSION
rem本脚本用于确定当前nt5以上框架工作站系统的级别版本和类型,需vbs/wmi支持
>%temp%\verx.vbsechoSetwmi=GetObject("winmgmts:\\.")
>>%temp%\verx.vbsechoSetoperation=wmi.instancesof(^"win32_Operatingsystem^")
>>%temp%\verx.vbsechoForEachsysInoperation
>>%temp%\verx.vbsechoWScript.Echosys.caption^&","^&sys.Version^&","^&sys.OSArchitecture
>>%temp%\verx.vbsechoNext
set"winver=Unkonw"
for/f"skip=2delims=,tokens=1,2,3"%%cin('cscript"%temp%\verx.vbs"')do(
echo%%c,%%d,%%e
echo===========================================================
for/f"delims=.tokens=1,2"%%iin("%%d")do(
if%%i.%%jequ10.0set"winver=Win_10"
if%%i.%%jequ6.2set"winver=Win_8"
if%%i.%%jequ6.1set"winver=Win_7"
if%%i.%%jequ6.0set"winver=Win_Vista"
if%%i.%%jequ5.2set"winver=Win_XP"
if%%i.%%jequ5.1set"winver=Win_XP"
if%%i.%%jequ5.0set"winver=Win_2K"
)
for/f"delims=-tokens=1"%%iin("%%e")do(
set"winver=!winver!.%%i"
if%%iequ32set"winver=!winver:.%%i=.x86!"
if%%iequ64set"winver=!winver:.%%i=.x64!"
)
)
echo!winver!

用vbs调用wmi显示系统name目的是为了与通过version得出的系统name对比。
其实单独获取version只需要ver命令配套for就可以了,不用再有第三个外部命令。

而且version确定系统name的方法本身需要参考ms的系统name与version列表,有的server版与workstation版用一个version,而xp更是有5.15.2两个version
更乱的是,还有内部BuildNumber

cmd下调用wmic的时候,wmic有一个bug就是在输出文本流时,每一行结尾都用软回车+硬回车两个符号表示换行,而软回车符号会在脚本中参与set的变量设置。
所以,我在用wmic的get的时候都会附带一个无用的字段同时加/format:csv参数,让无用字段来包含换行符号,避免要采集的数据字段包含换行符。
看来你用findstr正则的方式解决还不错,就是如果涉及其他非数字的字段就要另想办法。

在没有wmi的情况下,通过vbs获取系统版本,可以通过vbs获取系统explorer.exe的文件版本来确定系统version,通过明确系统是否存在SysWOW64文件夹来确定是否为x64.

VBS获取指定电脑的部分信息

ProgramName:Get_Remote_PC_Partial_Information.vbs
----TheCodeasBelow
'--------------------------
'AuthorBy:Wei_Zhu
'CreationDate:2010-03-08
'--------------------------

OnErrorResumeNext
ConstForReading=1,ForWriting=2,ForAppending=8
ConstTristateUseDefault=-2,TristateTrue=-1,TristateFalse=0

SetobjExcel=CreateObject("Excel.Application")
SetobjWorkbook=objExcel.Workbooks.Add()'Thisisaddnew
SetobjRange=objExcel.Range("A1","E1")
objRange.Font.Size=10
objrange.Font.Bold=True
objrange.Font.Name="TimesNewRoman"
objrange.Cells(1).Value="Domain"
objrange.Cells(2).Value="IP"
objrange.Cells(3).Value="Manufacturer"
objrange.Cells(4).Value="Model"
objrange.Cells(5).Value="SerialNumber"
objrange.Interior.ColorIndex=34'SetBackColor
objRange.Borders.LineStyle=1
SetobjRange=objExcel.ActiveCell.EntireColumn

objRange.AutoFit()

'----AutoFillTheColumnWidth---
Setobjcol=objExcel.Columns("A:E").EntireColumn
objcol.AutoFit

setws=createobject("wscript.shell")
setfso=createobject("scripting.filesystemobject")
setfolder=fso.getfolder(ws.CurrentDirectory&"/Computer")

Setfc=folder.Files
ForEachf1infc
s=folder&"/"&f1.name
setts=fso.OpenTextFile(s,ForReading)
lint_line=2
DoWhileNotts.AtEndOfStream
l_ip=ts.ReadLine
GetPCInfol_ip,f1.Name,lint_line
lint_line=lint_line+1
Loop
lint_line=0
ts.Close
Next

objExcel.DisplayAlerts=False'ClosetheAlert
'objExcel.ActiveWorkBook.Saveaslstg_to_f,-4143
'msgboxlstg_to_f
objExcel.ActiveWorkBook.Saveasfolder&".xls",-4143
objExcel.DisplayAlerts=False''ClosetheSaveAlert
objExcel.ActiveWorkbook.Close
objExcel.DisplayAlerts=False
objExcel.Application.Quit


FunctionGetPCInfo(ByValip,ByVall_fn,ByVall_line)
'FunctionGetPCInfo(l_fn,l_line)
strComputer=ip
objWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!//"&strComputer&"/root/cimv2")

colItems=objWMIService.ExecQuery("Select*fromWin32_SystemEnclosure")

l_Array=Split(l_fn,".",-1,1)

ForEachobjItemIncolItems
'MsgBox"Manufacturer:"&objItem.Manufacturer
'Msgbox"Product:"&objItem.Product
'Msgbox"SerialNumber:"&objItem.SerialNumber

objRange=objExcel.Range("A"&l_line,"E"&l_line)
objRange.Cells(1).value=l_Array(0)
objRange.Cells(2).value=ip
objRange.Cells(3).value=objItem.Manufacturer
objRange.Cells(4).value=objItem.Model
objRange.Cells(5).value=objItem.SerialNumber
Next
'----AutoFillTheColumnWidth---
objcol=objExcel.Columns("A:E").EntireColumn
objcol.AutoFit()

到此这篇关于vbs获取操作系统及其版本号的文章就介绍到这了,更多相关vbs操作系统信息内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!

热门推荐

1 毛坯房验收经验和常识 看了之后再验房心里有底
2 二手房收房如何交接 二手房收房注意问题
3 专业验收毛坯房的价格 商品房验收合格的标准
4 精装房怎么验收 精装房请验房师有用吗
5 一般要到哪里找验房师 验房师有哪些作用呢
6 请人验房一般是多少钱 验房师费用是多少
7 怎样测量房子面积 建筑面积和使用面积怎么算
8 收房需要注意什么 仔细检查不松懈
9 收房时三书一证一表是什么 主要作用介绍
10 交房时交房税费有哪些 本文为你一一讲解
11 验房都需要验什么 要做哪些准备呢
12 毛坯房验房师有必要请吗 毛坯房装修完如何验收
13 地下室防水工程质量验收规范详解
14 水性涂料、油性涂料区别介绍
15 零基础布艺DIY工坊 教你做超萌猫头鹰钥匙包
16 三棵树漆怎么样?三棵树漆官方网站
17 家庭“装修套餐”中猫腻你知道吗?
18 小空间大浴望 卫浴间装修巧支招