Hallo,
ich stehe vor folgender Aufgabe:
Ich schreibe ein Script welches den Festplattenspeicher eines Servers ausliest und auch den noch freien Speicher. Das ganze wird in eine XML Datei gepackt. Hinbekommen habe ich bisher das, vorrausgesetzt ich habe die Server und deren Festplatten schon in die XML Dateigeschrieben, die Daten beim ausführen des Scripts aktualisiert werden. Jetzt möchte ich das ganze etwas generischer gestalten, da es ja sein kann das ein neuer Server, oder eine neue Festplatte(Partition) hinzukommt. Ich scheitere an der Abfrage, ob ein neuer Server oder Partition hinzugekommen ist. Wie stelle ich das am besten an?
Etwas Code:
Bei meinem derzeitigen Script müsste ich, wenn ein neuer Server, oder eine neue Festplatte hinzukommt, diesen erstmal in die XML Datei eintragen.
Vielen Dank schonmal im Vorraus!
Gruß
ich stehe vor folgender Aufgabe:
Ich schreibe ein Script welches den Festplattenspeicher eines Servers ausliest und auch den noch freien Speicher. Das ganze wird in eine XML Datei gepackt. Hinbekommen habe ich bisher das, vorrausgesetzt ich habe die Server und deren Festplatten schon in die XML Dateigeschrieben, die Daten beim ausführen des Scripts aktualisiert werden. Jetzt möchte ich das ganze etwas generischer gestalten, da es ja sein kann das ein neuer Server, oder eine neue Festplatte(Partition) hinzukommt. Ich scheitere an der Abfrage, ob ein neuer Server oder Partition hinzugekommen ist. Wie stelle ich das am besten an?
Etwas Code:
XML-Quellcode
- <?xml version="1.0"?>
- <ALLESERVER>
- <SERVER name="SERVER01">
- <FESTPLATTE id="1" disk="C:">
- <SPEICHER>450,6 GB</SPEICHER>
- <FREIERSPEICHER>358,0 GB</FREIERSPEICHER>
- </FESTPLATTE>
- <FESTPLATTE id="2" disk="D:">
- <SPEICHER>13,7 GB</SPEICHER>
- <FREIERSPEICHER>3,4 GB</FREIERSPEICHER>
- </FESTPLATTE>
- </SERVER>
- </ALLESERVER>
Visual Basic-Quellcode
- on Error Resume Next
- Dim xmlDoc, nNode, objNodeList, plot
- dim serverNodeItem
- dim diskNodeItem
- dim diskID
- y = 1
- id = 1
- set objNetwork = CreateObject("WScript.Network") ' Den Servernamen holen
- 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.setProperty "SelectionLanguage", "XPath"
- xmlDoc.load "Pfad zur XML\server.xml" ' XML-Datei mit Infos zu allen Servern
- If Err.Number = 0 Then
- Set nNode = xmlDoc.selectsinglenode("//SERVER") ' Servernamen in die XML-Datei eintragen
- Set nameAttribute = xmlDoc.createAttribute("name")
- nameAttribute.Value = strComputerName
- nNode.attributes.setNamedItem(nameAttribute)
- For Each objDisk In colDiskSettings
- strDiskDeviceID = objDisk.DeviceID
- strDiskSize = FormatNumber((objDisk.Size / (1024 * 1024 * 1024)),1,0,0,0) ' Speicher in GB anzeigen und zwei Kommastellen
- strDiskFreeSpace = FormatNumber((objDisk.FreeSpace / (1024 * 1024 * 1024)),1,0,0,0) ' Freien Speicher in GB anzeigen und zwei Kommastellen
- If y = id Then ' Festplatten Informationen in der XML-Datei aktualisieren
- Set nNode = xmlDoc.selectsinglenode("//FESTPLATTE[@id='"& id &"']") ' Festplatte in disk Attribut eintragen
- Set nameAttribute = xmlDoc.createAttribute("disk")
- nameAttribute.Value = strDiskDeviceID
- nNode.attributes.setNamedItem(nameAttribute)
- Set nNode = xmlDoc.selectsinglenode("//FESTPLATTE[@id='"& id &"']/SPEICHER")
- nNode.text = strDiskSize & " GB"
- Set nNode = xmlDoc.selectsinglenode("//FESTPLATTE[@id='"& id &"']/FREIERSPEICHER")
- nNode.text = strDiskFreeSpace & " GB"
- End If
- id = id + 1
- y = y + 1
- Next
- Else
- Err.clear
- End If
- strResult = xmldoc.save("Pfad zur XML\server.xml") ' Aktualisierte XML-Datei speichern
Bei meinem derzeitigen Script müsste ich, wenn ein neuer Server, oder eine neue Festplatte hinzukommt, diesen erstmal in die XML Datei eintragen.
Vielen Dank schonmal im Vorraus!
Gruß
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „dieserDings“ ()