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操作系统信息内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!