-
Notifications
You must be signed in to change notification settings - Fork 0
/
WMI.vbs
55 lines (49 loc) · 1.55 KB
/
WMI.vbs
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
' Header
Option Explicit
On Error Resume Next
Dim WmiComputer, WmiNamespace
Dim WmiAPI
Dim WmiQuery
Dim WmiResult, Record
Dim xmlDoc
Dim XmlNodes, XmlNode
Dim XmlNodeNameAttribute
Const MaxNameLength = 25
' Reference
If wScript.Arguments.Named.Exists("Computer") Then
WmiComputer = wScript.Arguments.Named("Computer")
Else
WmiComputer = "."
End If
If wScript.Arguments.Named.Exists("Namespace") Then
WmiNamespace = wScript.Arguments.Named("Namespace")
Else
WmiNamespace = "\root\cimv2"
End If
If wScript.Arguments.Named.Exists("Query") Then
WmiQuery = wScript.Arguments.Named("Query")
Else
wScript.Echo "Usage: cscript WMI.vbs [/computer:<computer>] [/namespace:<WMI_namespace>] <Query>"
wScript.Echo "Example Query: Select * From Win32_Process"
wScript.Quit
End If
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
' Worker
Set WmiAPI = GetObject("winmgmts:\\" & WmiComputer & WmiNamespace)
Set WmiResult = WmiAPI.ExecQuery(WmiQuery)
' Output
For Each Record In WmiResult
XmlDoc.LoadXML(Record.GetText_(1))
Set XmlNodes = XmlDoc.GetElementsByTagName("PROPERTY")
For Each XmlNode in XmlNodes
XmlNodeNameAttribute = XmlNode.GetAttribute("NAME")
If Not Mid(XmlNodeNameAttribute, 1, 2) = "__" Then
While Len(XmlNodeNameAttribute) < MaxNameLength
XmlNodeNameAttribute = XmlNodeNameAttribute & " "
Wend
WScript.Echo XmlNodeNameAttribute & " = " & XmlNode.Text
End If
Next
wScript.echo("----------------------------------------------------------------------------")
Next
wScript.echo(vbNewLine&"Done")