Hallo Forum
Ich bin nun schon seit einigen Stunden am versuchen, dieses xml File auszulesen und in eine csv Liste zu schreiben. Leider gelingt mir dies noch nicht wie gewünscht und ich hoffe jemand von euch kann mir dieses Rätsel lösen. :-)
Das XML-File hat folgende Struktur:
<?xml version="1.0" encoding="utf-8"?><VMSystem xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><VersionConfig>6.0.0.5</VersionConfig><Filename>XMLConf.xml</Filename><Compatibilty>VMSystem</Compatibilty><Management><ManagementName>Basel</ManagementName></Management><DeviceServerList><DeviceServerCnf><DeviceServerName>bs-lsm-001</DeviceServerName><VideoDeviceList><VideoDevice><VideoDeviceHostName>bs-enc-001</VideoDeviceHostName><VideoDeviceCameraList><Camera><CameraUID>1900001</CameraUID></Camera></VideoDeviceCameraList></VideoDevice><VideoDevice><VideoDeviceHostName>bs-enc-002</VideoDeviceHostName><VideoDeviceCameraList><Camera><CameraUID>1900002</CameraUID></Camera></VideoDeviceCameraList></VideoDevice><VideoDevice><VideoDeviceHostName>kau-cam-003</VideoDeviceHostName><VideoDeviceCameraList><Camera><CameraUID>1900149</CameraUID></Camera></VideoDeviceCameraList></VideoDevice></VideoDeviceList></DeviceServerCnf><DeviceServerCnf><DeviceServerName>bs-dvs-001</DeviceServerName><VideoDeviceList><VideoDevice><VideoDeviceHostName>bsja-enc-006</VideoDeviceHostName><VideoDeviceCameraList><Camera><CameraUID>1900115</CameraUID></Camera></VideoDeviceCameraList></VideoDevice><VideoDevice><VideoDeviceHostName>bsja-enc-005</VideoDeviceHostName><VideoDeviceCameraList><Camera><CameraUID>1900114</CameraUID></Camera></VideoDeviceCameraList></VideoDevice></VideoDeviceList></DeviceServerCnf></DeviceServerList></VMSystem>
Am Schluss möchte ich eine Liste, welche folgendermassen aussieht:
Standort DeviceServerName CameraID CameraHostname
Basel bs-lsm-001 1900001 bs-enc-001
Basel bs-lsm-001 1900002 bs-enc-002
Basel bs-lsm-001 1900149 kau-cam-003
Basel bs-dvs-001 1900115 bsja-enc-006
Versucht habe ich es mit diesem Code, jedoch kriege ich die Verlinkung der CameraID und dem CameraHostName nicht hin.
$DestinationDirectory = "\\zol-dc-01\Daten\Backups\Massenexport" $Files = Get-ChildItem -Path $DestinationDirectory -Filter *.xml foreach ($File in $Files) { $a=([xml](gc $DestinationDirectory\$File)).VMSystem $d=([xml](gc $DestinationDirectory\$File)).VMSystem.DeviceServerList.DeviceServerCnf | % { foreach ($i in $_.VideoDeviceList.VideoDevice.VideoDeviceCameraList.Camera.CameraUID) { $o = New-Object Object Add-Member -InputObject $o -MemberType NoteProperty -Name Standort -Value $a.Management.ManagementName Add-Member -InputObject $o -MemberType NoteProperty -Name DeviceServerName -Value $_.DeviceServerName Add-Member -InputObject $o -MemberType NoteProperty -Name CameraID -Value $i foreach ($j in $_.VideoDeviceList.VideoDevice.VideoDeviceHostName) { Add-Member -InputObject $o -MemberType NoteProperty -Name CameraHostname -Value $_.VideoDeviceList.VideoDevice.VideoDeviceHostName -Force | Where-Object {$i -eq ($_.VideoDeviceList.VideoDevice.VideoDeviceCameraList.Camera.CameraUID)} } $o } } $d #$d | Export-Csv -NoTypeInformation -Path "$DestinationDirectory\$File.csv"
Ich habe im Beispiel nun lediglich ein xml File erwähnt. Am Schluss habe ich ca. 16 xml Files, welche ich nach diesem Verfahren durchsuchen und eine csv Liste erstellen möchte. Dies nur zur Erklärung.
Danke für eure Hilfe oder Tipps.
Gruss Thomas