1

请需要帮助。我的脚本是

    Set objService = GetObject("winmgmts:\\.\Root\CIMV2") 
    Set colListOfServices = objService.ExecQuery _ 
    ("Select * from Win32_Service Where StartMode = 'Auto' 
    AND Started = false")

    For Each objService in colListOfServices 
    WScript.Echo Date & " " & Time & objService.Caption

    Set xmlDoc = _
      CreateObject("Microsoft.XMLDOM")  
    XMLDoc.async = False

    Set objRoot = _
      xmlDoc.createElement("ServerCheck")  
    xmlDoc.appendChild objRoot

    Set objRecord = _
      xmlDoc.createElement("Services") 
    objRoot.appendChild objRecord 

    For Each objName in colListOfServices 
    Set objName = _
      xmlDoc.createElement("Name")  
    objName.Text = objService.Caption
    objRecord.appendChild objName
    Next

    Set objDate = _
      xmlDoc.createElement("Date")  
    objDate.Text = Date & Time 
    objRecord.appendChild objDate  

    Set objIntro = _
      xmlDoc.createProcessingInstruction _
      ("xml","version='1.0'")  
    xmlDoc.insertBefore _
      objIntro,xmlDoc.childNodes(0)  

    xmlDoc.Save "C:\Users\111\Desktop\Audits.xml"
    Next

还有我的 XML

Services><Name>Windows install</Name><Name>Windows install</Name>
<Name>Windows install</Name><Date>25.12.201215:51:19</Date>

WScript.Echo(to test) 给我 3 个不同的停止服务。但在我的 XML 中,仅将一项服务保存为 3 个副本。如何将所有停止的服务保存在 XML 中?

4

1 回答 1

1

我希望我的脚本以 XML 编写所有在自动启动模式下停止的服务。

您的问题是您在循环中创建并编写了一个新的XMLFor Each文件。您一次又一次地覆盖同一个文件,最终得到一个仅包含上次停止服务的文件。

在循环之外创建并保存 XML。

Option Explicit

Dim objWmi, wql, objService, xmlDoc, objRoot, objRecord

Set objWmi = GetObject("winmgmts:\\.\Root\CIMV2")
wql = "SELECT * FROM Win32_Service WHERE StartMode = 'Auto' AND Started = false"

Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False

Set objRoot = NewElement(xmlDoc, "ServerCheck", "")

For Each objService in objWmi.ExecQuery(wql)
    WScript.Echo Date & " " & Time & objService.Caption

    Set objRecord = NewElement(objRoot, "Services", "")

    NewElement objRecord, "Name", objService.Caption
    NewElement objRecord, "Date", Date & " " & Time
Next

xmlDoc.Save "C:\Users\111\Desktop\Audits.xml"

' --------------------------------------------------------------------
Function NewElement(parent, name, text)
    Set NewElement = parent.ownerDocument.createElement(name)
    If text <> "" Then NewElement.Text = text
    parent.appendChild NewElement
End Function

我也做了一些其他的改进。

于 2012-12-25T14:55:06.253 回答