vbs查询局域网内电脑的软件和硬件列表清单

时间:2022-06-01 14:13:36

下面的代码在windows下容易报毒大家可以放心使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
'==========================================================================
'
' Date:2009/3/19
' Name: 查询软件和硬件列表清单
' Author:Smileruner
' www.overmcse.com
' 不支持Win2000及WinNT
'
' 3/19,添加了网卡过滤。
'==========================================================================
'on error resume Next
 
const HKEY_LOCAL_MACHINE = &H80000002
const UNINSTALL_ROOT = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
const REG_SZ = 1
 
'Set wshshell=wscript.createobject("wscript.shell")
' wshshell.run ("%comspec% /c regsvr32 /s scrrun.dll"),0,true
' wshshell.run ("%comspec% /c sc config winmgmt start= auto"),0,true
' wshshell.run ("%comspec% /c net start winmgmt"),0
 
strComputer = Inputbox("请输入要查询的计算机名称",,"")
 
If strComputer = "" then
    Wscript.Echo "未输入值或用户取消,查询退出。"
    Wscript.Quit
End If
 
Set objswbemlocator = createobject("wbemscripting.swbemlocator")
Set objswbemservices = objswbemlocator.connectserver(strComputer, "root\cimv2")
If Err.number <> 0 then
    Wscript.Echo "目标计算机无法连接。错误的计算机名,或目标计算机启用了防火墙,RPC服务不可用。"
    Err.number.clear
    Wscript.Quit
End If
 
'swbemservices.security_.impersonationleobjvel = 3
 
Set fso=createobject("scripting.filesystemobject")
FileDate = Replace(date(), "/", "-")
resoultfilepath= strComputer & FileDate & ".html"
Set resultFile= fso.createtextfile(resoultfilepath,,true)
 
HtmlWriteHead()
'Html文档开始
 
TableHead strComputer,"硬件清单"
'Html表格开始
 
OsWrite()   
            '写入操作系统信息
BoardWrite()
            '写入主板信息
CpuWrite()   
            '写入CPU信息
MemoryWrite()   
            '写入内存信息
HarddiskWrite()
            '写入硬盘信息
CdromWrite()
            '写入CDROM信息
VideoWrite()
            '写入显示卡信息
NetcardWrite()
            '写入网卡信息
TableEnd()
            'Html表格结尾
TableHead strComputer,"软件清单"
            'Html表格开头
Softlist()
            '写入软件信息
TableEnd()
            'Html表格结尾
HtmlWriteEnd()
            'Html文档结束
 
ResultFile.close
Wscript.Echo "查询完成!"
 
'=========以下是函数列表==========
 
 
Function OsWrite()
        '函数,写入操作系统信息
    Set colOs =objswbemservices.execquery("select * from win32_operatingsystem",,48)
    For Each Ositem In colOs
        oscaption = Ositem.caption
        OsVersion = oscaption & Ositem.version
        WriteTable "操作系统",OsVersion
    Next
End Function
 
 
Function BoardWrite()
        '函数,写入主板信息
    Set colBoard = objswbemservices.execquery("select * from win32_baseboard")
    For Each Bditem In colBoard
        boardname = Bditem.product
        WriteTable "主板",boardname
    Next
End Function
 
 
Function CpuWrite()
        '函数,写入CPU信息
    Set colCpu =objswbemservices.execquery("select * from win32_processor")
    For Each item in colCpu
        cpuname = (trim(item.name))
        WriteTable "*处理器",cpuname
    Next
End Function
 
Function MemoryWrite()
        '函数,写入内存信息
mtotal    = 0
num     = 0
mill     = 0
    Set colMemory = objswbemservices.execquery("select * from win32_physicalmemory",,48)
    For Each objitem In colMemory
        mill = objitem.capacity/1048576
        WriteTable "单根内存容量",mill & "M"
        mtotal = mtotal+mill
        num = num + 1
    Next
    WriteTable "总计内存",num & "条" & "一共" & mtotal & "M"
End Function
 
Function HarddiskWrite()
        '函数,写入硬盘信息
    Set colDisk = objswbemservices.execquery("select * from win32_diskdrive", , 48)
    For Each objitem In colDisk
        diskname= objitem.caption
        disksize= fix(objitem.size/1073741824)
        WriteTable "硬盘",diskname & " 容量:" & disksize & "G"
    Next
End Function
 
 
 
Function CdromWrite()
        '函数,写入CDROM信息
    Set colCdrom = objswbemservices.execquery("select * from win32_cdromdrive where scsitargetid=0")
    For Each objitem In colCdrom
        cdname = objitem.name
        WriteTable "光驱",cdname
    Next
End Function
 
Function videoWrite()
        '函数,写入显示卡信息
    Set colVideo = objswbemservices.execquery("select * from win32_videocontroller", , 48)
    For Each objitem in colVideo
        videoname = (trim(objitem.caption) & (objitem.videomodedescription))
        WriteTable "显示卡",videoname
    Next
End Function
 
 
Function netcardWrite()
        '函数,查询网卡信息
    Set colNetcards = objswbemservices.execquery("select * from win32_networkadapter")
        For Each objNetcard in colNetcards           
        If Not IsNull(objNetcard.NetConnectionID) Then
            NetCardName     = objNetcard.productname
                WriteTable "网卡名称",NetCardName
         
            If objNetcard.NetConnectionStatus = 2 Then            
            NetCardMac     = objNetcard.macaddress
            WriteTable "网卡Mac",NetCardMac
 
            strQueryIp ="select * from win32_networkadapterconfiguration" &_
                     " where IPEnabled = true" &_
                     " and macaddress = '" & objNetcard.macaddress & "'"
            Set colNetcardCfgs = objswbemservices.execquery(strQueryIp)
            For Each objNetcardCfg in colNetcardCfgs       
                For Each CfgAdrress in objNetcardCfg.IPAddress
                    IpAdrress = CfgAdrress
                    WriteTable "IP地址",IpAdrress
                Next
            Next   
 
            Else
 
            NetCardMac = "网卡被禁用或未连接。"
            WriteTable "网卡Mac",NetCardMac
            IpAdrress = "网卡被禁用或未连接。"
            WriteTable "IP地址",IpAdrress   
            
            End If
                
        End if
            
        Next
End Function
 
Function softlist()
        '函数,写入软件信息
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
 
strKeyPath = UNINSTALL_ROOT
 
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each strSubKey In arrSubKeys
    If NotHotfix(strSubKey) Then       
        SoftNameAndVersion = getProgNameAndVersion(oReg,strKeyPath & "\" & strSubKey)
        If SoftNameAndVersion<>"0" Then
        WriteTable "软件",SoftNameAndVersion       
        End If
    End If
Next        
End Function
 
Function NotHotfix(sSubKey)   
    If Left(sSubkey,2) = "KB" And len(sSubkey) = 8 Then
        NotHotfix = 0
    Else NotHotfix = 1
    End if
End Function
 
Function getProgNameAndVersion(oReg,sKeyRoot)
Dim sKeyValuesAry, iKeyTypesAry, nCnt, sValue, sDisplayName, sDisplayVersion
oReg.EnumValues HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry, iKeyTypesAry
    If NOT IsArray(sKeyValuesAry) Then
        getProgNameAndVersion = 0
        Exit Function
    End If
 
    For nCnt = 0 To UBound(sKeyValuesAry)
        If InStr(1, sKeyValuesAry(nCnt), "DisplayName", vbTextCompare) Then
            If iKeyTypesAry(nCnt) = REG_SZ Then
                oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
                If sValue<>"" Then
                    sDisplayName = sValue               
                    sDisplayName = Replace(sDisplayName, "[", "(")
                    sDisplayName = Replace(sDisplayName, "]", ")")
                End If
            End If
        ElseIf InStr(1, sKeyValuesAry(nCnt), "DisplayVersion", vbTextCompare) Then
            If iKeyTypesAry(nCnt) = REG_SZ Then
                oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
                If sValue<>"" Then sDisplayVersion = sValue
            End If
        End If
 
        If (sDisplayName<>"") AND (sDisplayVersion<>"") Then
            getProgNameAndVersion = sDisplayName & " --版本号: " & sDisplayVersion
            Exit Function
        Else     getProgNameAndVersion = 0           
        End If
    Next
 
    If sDisplayName<>"" Then
        getProgNameAndVersion = sDisplayName
        Exit Function                   
    End If
End Function
 
 
Function WriteTable(caption,value)
        '函数,将数据写入HTML单元格
resultFile.Writeline "<tr>"
resultFile.Writeline "<td align=""left"" width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">&nbsp;&nbsp;" & caption & "</td>"
resultFile.Writeline "<td bgcolor=""#ffffff"">&nbsp;&nbsp;" & value & "</td>"
resultFile.Writeline "</tr>"
End Function
 
Function HtmlWriteHead()
        '函数,写入THML文件头
resultFile.Writeline "<html>"
resultFile.Writeline "<head>"
resultFile.Writeline "<title>软硬件配置清单</title>"
resultFile.Writeline "</head>"
resultFile.Writeline "<body>"
End Function
 
 
Function HtmlWriteEnd()
        '函数,写入Html文件尾
resultFile.Writeline "</body>"
resultFile.Writeline "</html>"
End Function
 
Function TableHead(pcname,str)
        '函数,写入Html表格结尾
resultFile.Writeline "<h3>" & pcname & str & " -- date:"&now()&" </h3>" & VbCrLf
resultFile.Writeline "<table width=""90%"" border=""0"" align=""center"" cellpadding=""0"" cellspacing=""1"" bgcolor=""#0000ff"">"
resultFile.Writeline "<tr>"
resultFile.Writeline "<th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""col"">资产类型</th>"
resultFile.Writeline "<th bgcolor=""#ffffff"" scope=""col"">查询结果值</th>"
resultFile.Writeline "</tr>"
strstyle = "<th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">"
End Function
 
Function TableEnd()
        '函数,Html表格结尾
resultFile.Writeline "</table>"
End Function

vbs判断操作系统

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objItem in colItems
strOSVersion = objItem.Version
Next
wscript.echo strOSversion
select case strOSversion
case "5.2.3790"
wscript.echo "Windows Server 2003"
case "5.0.2195"
wscript.echo "Windows 2000"
case "5.1.2600"
wscript.echo "Windows XP"
case "6.0.6001"
wscript.echo "windows visita"
Case "6.1.7601"
wscript.echo "Windows Server 2008 r2"
case else
wscript.echo "i don't know"
end select

到此这篇关于vbs查询局域网内电脑的软件和硬件列表清单的文章就介绍到这了,更多相关查询软件和硬件列表清单内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!