Benutzer mit den meisten Antworten
Powershell und XML

Frage
-
Hallo Forum,
ich beschäftige mich seit kurzem mit PS und möchte es gerne lernen. Mit Batch und VBScript bin ich ziemlich vertraut, doch PS ist da halt etwas anders.
Zu meinem Problem habe ich leider bislang im Internet noch keine Lösung gefunden, vielleicht kann mir aber jemand aus dem Forum weiterhelfen. Was mein Problem ist? Nun, ich möchte es mal kurz erläutern:
ich habe folgende XML-Datei:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <VERSION VERSION="1.0"> <COMPUTER COMP="0" POWER="1"/> <OBJECT base="status" name="status" oid="0"> <PROPERTY name="Wert-1">1000</PROPERTY> <PROPERTY name="Wert-2">1001</PROPERTY> <PROPERTY name="Wert-3">1002</PROPERTY> <PROPERTY name="Wert-4">1003</PROPERTY> <PROPERTY name="Wert-5">1004</PROPERTY> </OBJECT> </VERSION>
ich möchte z.B. mit PS nun den Wert 1002 abfragen. Was ich bislang an der Konsole gemacht habe, ist folgendes:
$xml = [xml](Get-Content "C:\temp\test.xml")
$xml.version.object.property | where { $_.name -eq 'Wert-3' } | select-object "#text"
als Ergebnis habe ich dann dass erhalten:
#text
-----
1002Was ich aber möchte, ist lediglich der Wert 1002 ohne dieses #text
Mit dieser Abfrage hat's zwar funktioniert ...
$xml.version.object.property[2]."#text"
1002
aber ich möchte eine Abfrage, auf die ich mit dem Attribut "Name=Wert-3" fragen kann.
Könnte mir jemand bitte einen Lösungsansatz geben, ich stehe im Moment echt auf dem Schlauch.
Vielen herzlichen Dank
- Bearbeitet Roland Gantenbein Mittwoch, 30. Januar 2013 11:44
Antworten
-
Hallo,
so funktioniert es, wenn ich Deine Frage richtig verstanden habe:
($xml.VERSION.OBJECT.PROPERTY | Where-Object { $_.Name -eq 'Wert-3' }).'#Text'
Das Resultat von Where-Object einfach in Klammern nehmen und von dem Objekt dann auch die gewünschte Eigenschaft zugreifen.
-Raimund
- Bearbeitet Raimund AndréeMicrosoft employee Mittwoch, 30. Januar 2013 12:45
- Als Antwort markiert Roland Gantenbein Mittwoch, 30. Januar 2013 13:12
Alle Antworten
-
Hallo,
so funktioniert es, wenn ich Deine Frage richtig verstanden habe:
($xml.VERSION.OBJECT.PROPERTY | Where-Object { $_.Name -eq 'Wert-3' }).'#Text'
Das Resultat von Where-Object einfach in Klammern nehmen und von dem Objekt dann auch die gewünschte Eigenschaft zugreifen.
-Raimund
- Bearbeitet Raimund AndréeMicrosoft employee Mittwoch, 30. Januar 2013 12:45
- Als Antwort markiert Roland Gantenbein Mittwoch, 30. Januar 2013 13:12
-
Hallo Raimund,
Du hast meine Frage absolut richtig verstanden und hiermit auch exakt die Lösung präsentiert, welche ich schon soooooo lange gesucht habe.
!!!! Herzlichen Dank dafür !!!!
Ich habe zwei Bücher von Tobias Weltner durchgewälzt und kam nicht auf diese Lösung. Ich sehe schon, ich steh erst am Anfang des Berges und muss noch viel lernen :-)
Gruss
Roland