Powershell - XML - Nummer finden
Ich habe folgendes Problem, folgende Frage. Vielleicht kann mir jemand helfen.
Folgende Sache.
In der XML ist folgende Struktur vorhanden:
Mein Problem ist nun folgendes.
Ich möchte bei der Sucheingabe der z.B. Nummer "66489279" (wie oben) als Ergebnis die Serial angezeigt bekommen, die in diesem "Unit" Container verbunden ist.
In dem Fall sollte also angezeigt werden: "3628506475645"
Leider tue ich mich damit schwer.
Ich bekomme zwar z.B. so etwas hin:
Oder
aber beim letzten Code werden mir wieder alle <Serial> aus allen Blöcken angezeigt.
Jemand eine Idee, einen Tipp? Danke vorab.
Folgende Sache.
In der XML ist folgende Struktur vorhanden:
<SNData>
<Unit>
<Time>2020-01-12T06:24:46.613</Time>
<Serial>3628506475645</Serial>
<Error>1</Error>
<ccode>4331017196</ccode>
<ContUnits>
<Serial-lvl1>66489279</Serial-lvl1>
<Serial-lvl1>67176108</Serial-lvl1>
</ContUnits>
</Unit>
</SNData>
Mein Problem ist nun folgendes.
Ich möchte bei der Sucheingabe der z.B. Nummer "66489279" (wie oben) als Ergebnis die Serial angezeigt bekommen, die in diesem "Unit" Container verbunden ist.
In dem Fall sollte also angezeigt werden: "3628506475645"
Leider tue ich mich damit schwer.
Ich bekomme zwar z.B. so etwas hin:
[xml]$catalogXML = (Get-Content ("C:\temp\test.xml"))
$catalogXML.SNData.Unit.ContUnits."SN-level1" | where {$_ -eq "66489279"}
Oder
$catalogXML.SNData.Unit.ContUnits."Serial-lvl1" | where {$_ -eq "66489279"} | select $catalogXML.SNData.Unit.Serial
Jemand eine Idee, einen Tipp? Danke vorab.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1476513725
Url: https://administrator.de/contentid/1476513725
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
3 Kommentare
Neuester Kommentar
$xml = [xml]@'
<?xml version="1.0" encoding="utf-8"?>
<SNData>
<Unit>
<Time>2020-01-12T06:24:46.613</Time>
<Serial>3628506475645</Serial>
<Error>1</Error>
<ccode>4331017196</ccode>
<ContUnits>
<Serial-lvl1>66489279</Serial-lvl1>
<Serial-lvl1>67176108</Serial-lvl1>
</ContUnits>
</Unit>
</SNData>
'@
$number = Read-Host "Nummer eingeben"
$node = $xml.SelectSingleNode("/SNData/Unit[ContUnits/Serial-lvl1='$number']")
if ($node){
write-host "Serial: $(node.Serial)" -F Green
}else{
write-host "Nicht gefunden." -F Yellow
}
oder als Einzeiler
(Select-XML "C:\temp\test.xml" -XPath "/SNData/Unit[ContUnits/Serial-lvl1='$(Read-Host "Nummer eingeben")']/Serial").Node.InnerText