0
XML 노드가 이미 존재하는 경우 내 VBScript를 체크인하고 싶습니다. 이 경우 Node를 다시 추가해서는 안되며 대신 데이터를 업데이트해야합니다. 내가 해결할 수있는 방법이 있습니까? 여기 내 코드는 다음과 같습니다.
스크립트가 실행되면 컴퓨터 데이터가있는 새 노드가 생성됩니다. (새 서버 또는 하드 디스크가 추가 된 경우) 누락 된 사항은 노드가 이미있는 경우 최신 데이터로 업데이트된다는 것입니다.XML 노드가 이미 존재하는지 확인하십시오.
여기 내 코드입니다 :
XML :
<?xml version="1.0"?>
<SERVERSPEICHER>
<SERVER name="LANADMIN">
<FESTPLATTE id="1" disk="C:">
<SPEICHER>'450,6'</SPEICHER>
<FREIERSPEICHER>'356,5'</FREIERSPEICHER>
</FESTPLATTE><FESTPLATTE id="2" disk="Q:">
<SPEICHER>'13,7'</SPEICHER>
<FREIERSPEICHER>'3,4'</FREIERSPEICHER>
</FESTPLATTE>
</SERVER>
</SERVERSPEICHER>
의 VBScript :
on Error Resume Next
Function GetElementFromXmlString(xmlString)
Dim doc
set doc = CreateObject("Microsoft.XMLDOM")
doc.async = False
doc.preserveWhiteSpace= False
doc.loadXML(xmlString)
Set GetElementFromXmlString = doc.documentElement
End Function
Dim xmlDoc, nNode, objNodeList, plot
dim serverNodeItem
dim diskNodeItem
dim diskID
y = 1
id = 1
set objNetwork = CreateObject("WScript.Network")
strComputerName = objNetwork.Computername
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputerName)
Set colDiskSettings = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=3") ' Festplattendaten
Set xmlDOc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.load "server.xml"
Set objRoot = xmlDoc.documentElement
If Err.Number = 0 Then
Dim xmlString
xmlString = "<SERVER name='"& strComputerName &"'>" & _
"</SERVER>"
Dim newServer
Set newServer = GetElementFromXmlString(xmlString)
objRoot.appendChild(newServer)
Set objServer = xmlDoc.selectsinglenode("//SERVER")
For Each objDisk In colDiskSettings
strDiskDeviceID = objDisk.DeviceID
strDiskSize = FormatNumber((objDisk.Size/(1024 * 1024 * 1024)),1,0,0,0)
strDiskFreeSpace = FormatNumber((objDisk.FreeSpace/(1024 * 1024 * 1024)),1,0,0,0)
Dim xmlDiskString
xmlDiskString = "<FESTPLATTE id='"& id &"' disk='"& strDiskDeviceID &"'>" & _
" <SPEICHER>'"& strDiskSize &"'</SPEICHER>" & _
" <FREIERSPEICHER>'"& strDiskFreeSpace &"'</FREIERSPEICHER>" & _
" </FESTPLATTE>"
If y = id Then
Dim newDisk
Set newDisk = GetElementFromXmlString(xmlDiskString)
objServer.appendChild(newDisk)
End If
id = id + 1
y = y + 1
Next
Else
Err.clear
End If
strResult = xmldoc.save("server.xml")
어떤 도움이 좋을 것이다!
감사
와우, 일! 고마워요! – user3073688
@ user3073688 아마도이 질문을 수락 답변으로 표시하여 같은 질문을 가진 다른 사용자가이 대답을 쉽게 찾을 수 있도록해야합니다. (그리고 그에게 가상 인터넷 포인트를 제공하여 답변자에게 감사의 표시!) – AutomatedChaos
Sry, 나는 Stackoverflow에 새로운 ... 나는 그것을 표시했습니다! 조언 주셔서 감사합니다! – user3073688