显然,WQL不包含ORDER BY子句。有没有办法根据其中一列对结果集进行排序?例如:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
sSQL = "Select Time,Source,Event,CategoryNum,Category,TypeNum,Type,User,ComputerName,Insertion1,Insertion2,Data from Win32_NTLogEvent Where Logfile = 'System' and SourceName = 'Service Control Manager'"
Set resultSet = objWMIService.ExecQuery (sSQL)
For Each objEvent In resultSet
...
Next有没有办法按Time列对resultSet进行排序?
发布于 2017-09-12 18:23:43
WQL确实没有排序子句,因此不可能直接在查询中排序。您可以做的是将返回的数据放入disconnected recordset中,然后对记录集进行排序:
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Time", 7
DataList.Fields.Append "Source", 200, 255
DataList.Fields.Append "Event", 3
...
DataList.Open
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//./root/cimv2")
qry = "SELECT Time,Source,Event,CategoryNum,Category,TypeNum,Type,User,ComputerName,Insertion1,Insertion2,Data " & _
"FROM Win32_NTLogEvent " & _
"WHERE Logfile='System' AND SourceName='Service Control Manager'"
For Each evt In wmi.ExecQuery(qry)
DataList.AddNew
DataList("Time") = evt.Time
DataList("Source") = evt.Source
DataList("Event") = evt.Event
...
DataList.Update
Next
DataList.Sort = "Time"
DataList.MoveFirst
Do Until DataList.EOF
WScript.Echo DataList.Fields.Item("Time") & vbTab & _
DataList.Fields.Item("Event")
DataList.MoveNext
Loop根据需要调整字段的data type。
https://stackoverflow.com/questions/46173316
复制相似问题