vbs获取操作系统及其版本号
vbs获取操作系统及其版本号
'************************************** '*byr05e '*操作系统及其版本号 '************************************** strComputer="." SetobjWMIService=GetObject("winmgmts:"_ &"{impersonationLevel=impersonate}!\\"&strComputer&"\root\cimv2") SetcolOperatingSystems=objWMIService.ExecQuery_ ("Select*fromWin32_OperatingSystem") ForEachobjOperatingSystemincolOperatingSystems Wscript.EchoobjOperatingSystem.Caption&""&objOperatingSystem.Version Next
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操作系统信息内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!