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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 1476513725
Url: https://administrator.de/contentid/1476513725
Printed on: May 10, 2024 at 22:05 o'clock
3 Comments
Latest comment
$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