Also habe ich diese Funktion, die ich verwende, um das Attribut "Typ" von einem meiner XML-Knoten zu erhalten. In der XML-Datei sind mindestens zwei dieser Knoten enthalten.Zugriff XML-Attribut mit Powershell schlägt für einen Knoten, aber nicht einen anderen
Der XML-Abschnitt sieht wie folgt aus
<config>
<local>
<setup>
<backup type="7Day"/>
<folder name="Backups" type="backup_root">
<folder name="DayTemplate" type="day_template">
<folder name="Logs"/>
<folder name="Objects">
<folder name="Applications"/>
</folder>
</folder>
</folder>
</setup>
</local>
</config>
In meiner Funktion unten Ich bin im XML-Objekt $ xmlDoc.config.local.setup vorbei und dann, was ‚Typ‘ Ich erwarte zu finden. Die Nutzung wäre so etwas wie
$type = Get-FolderNameByType -folders $xmlDoc.config.local.setup -type 'day_template'
Der erste Ordnertyp ‚backup_root‘ ich sehen kann, wenn Sie den Code debuggen. Wenn die Übereinstimmung nicht wie erwartet erreicht wird, wird die zweite "day_template" nie gefunden. Die foreach-Schleife springt aus irgendeinem Grund direkt an ihr vorbei und ich bin mir nicht sicher warum.
function Get-FolderNameByType
{
param
(
[Object]
$folders,
[Object]
$type
)
foreach ($folder in $folders.folder)
{
if ($folder.type)
{
if ($folder.type -eq $type)
{
return $folder.name.tostring()
}
}
}
}
Ich bin sicher, dass dieses Problem hat alles zu tun, wie ich die XML-Parsing bin und wie es tatsächlich im Speicher organisiert, aber ich kann es nicht herausgefunden. Jede Hilfe wird sehr geschätzt.
Vielen Dank. Das hat den Trick gemacht. Ich hatte vergessen, dass einige dieser Einträge im XML verschachtelt waren. Danke, dass du darauf hingewiesen hast. – todd1215