Ich versuche, folgende XML-Datei in PowerShell-Wörterbuch zu konvertieren.Wie leere XML-Elemente in PowerShell-Wörterbuch konvertiert werden
<configuration>
<environment id="Test">
<client>ABC</client>
<type>Test</type>
<template> </template>
<targetmachines>
<targetmachine>
<name>Any</name>
<remotedirectory>C:\ServiceDirectory</remotedirectory>
</targetmachine>
</targetmachines>
<connectionStrings>
<DB1>User ID=xx;password=xx=;</DB1>
<DB2>User ID=yy;password=yy=;</DB2>
</connectionStrings>
</environment>
</configuration>
Hier ist mein Powershell-Skript:
$environmentId = "Test"
$configxml = [xml] (Get-Content "xmlfile")
$keyValuePairs = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$configxml.SelectNodes("descendant::configuration/environment[@id='$($environmentId)']/descendant::text()[normalize-space()]") | Where-Object {$_.Value} |
ForEach-Object {
$keyValuePairs.Add($_.ParentNode.ToString(), $_.Value)
}
Write-Output $keyValuePairs
ich folgende Ausgabe bekommen:
Key Value
--- -----
client ABC
type Test
name Any
remotedirectory C:\ServiceDirectory
DB1 User ID=xx;password=xx=;
DB2 User ID=yy;password=yy=;
Der obige Powershell-Skript funktioniert gut. Aber ich möchte folgende Ausgabe. Der Unterschied hier ist, dass wir einen Extra-Schlüssel namens "Template" haben, der einen leeren Wert hat. Ich möchte leere Wertelemente in ein Wörterbuch umwandeln.
Kann mir bitte jemand vorschlagen, wie ich mein Powershell-Skript aktualisiere. Danke im Voraus.
'.//configuration/environment[@id='$($environmentId)']//* [not (*)] ' – PetSerAl
Hi, Getting following error, Ausnahme" SelectNodes "mit" 1 "Argument (en): " 'Nachkommen :: Konfiguration/Umgebung [@ id =' Test ']/Nachkommen: : * [nicht (*)] 'hat ein ungültiges Token. " – mahesh
Ich weiß nicht warum, aber StackOverflow fügt zwei nicht druckbare Zeichen nach 'not' ein. Sie müssen sie entfernen. – PetSerAl