Select-Xml
Sucht Text in einer XML-Zeichenfolge oder einem Dokument.
Syntax
Xml (Standard)
Select-Xml
[-XPath] <string>
[-Xml] <XmlNode[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Path
Select-Xml
[-XPath] <string>
[-Path] <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
LiteralPath
Select-Xml
[-XPath] <string>
-LiteralPath <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Content
Select-Xml
[-XPath] <string>
-Content <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Beschreibung
Mit dem Cmdlet Select-Xml können Sie XPath-Abfragen verwenden, um in XML-Zeichenfolgen und -Dokumenten nach Text zu suchen.
Geben Sie eine XPath-Abfrage ein, und verwenden Sie den Content, Pathoder XML- Parameter, um den zu durchsuchenden XML-Code anzugeben.
Beispiele
Beispiel 1: Auswählen von AliasProperty-Knoten
In diesem Beispiel werden die Aliaseigenschaften im Types.ps1xml. Informationen zu dieser Datei finden Sie unter about_Types.ps1xml.
Der erste Befehl speichert den Pfad zur Types.ps1xml Datei in der variablen $Path.
Der zweite Befehl speichert den XML-Pfad im AliasProperty Knoten in der $XPath Variablen.
Das cmdlet Select-Xml ruft die AliasProperty Knoten ab, die von der XPath-Anweisung aus der Types.ps1xml-Datei identifiziert werden. Der Befehl verwendet einen Pipelineoperator (|), um die AliasProperty- knoten an das Cmdlet Select-Object zu senden. Der parameter ExpandProperty expands the Node object and returns its Name and ReferencedMemberName properties.
$Path = "$PSHOME\Types.ps1xml"
$XPath = "/Types/Type/Members/AliasProperty"
Select-Xml -Path $Path -XPath $Xpath | Select-Object -ExpandProperty Node
Name ReferencedMemberName
---- --------------------
Count Length
Name Key
Name ServiceName
RequiredServices ServicesDependedOn
ProcessName Name
Handles Handlecount
VM VirtualSize
WS WorkingSetSize
Name ProcessName
Handles Handlecount
VM VirtualMemorySize
WS WorkingSet
PM PagedMemorySize
NPM NonpagedSystemMemorySize
Name __Class
Namespace ModuleName
Das Ergebnis zeigt den Namen und ReferencedMemberName jeder Aliaseigenschaft in der Types.ps1xml Datei an. Beispielsweise gibt es eine Count-Eigenschaft, die ein Alias der eigenschaft Length ist.
Beispiel 2: Eingeben eines XML-Dokuments
In diesem Beispiel wird gezeigt, wie Sie den Xml--Parameter verwenden, um dem cmdlet Select-Xml ein XML-Dokument bereitzustellen.
Das cmdlet Get-Content ruft den Inhalt der Types.ps1xml Datei ab und speichert sie in der variablen $Types. Die [xml] wandelt die Variable als XML-Objekt um.
Das cmdlet Select-Xml ruft die knoten MethodName in der datei Types.ps1xml ab. Der Befehl verwendet den Xml--Parameter, um den XML-Inhalt in der variablen $Types und den XPath- parameter anzugeben, um den Pfad zum MethodName Knoten anzugeben.
[xml]$Types = Get-Content $PSHOME\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Beispiel 3: Durchsuchen von PowerShell-Hilfedateien
In diesem Beispiel wird gezeigt, wie Sie das Cmdlet Select-Xml verwenden, um die Hilfedateien für xmlbasierte Cmdlets in PowerShell zu durchsuchen. In diesem Beispiel suchen wir nach dem Cmdlet-Namen, der als Titel für jede Hilfedatei und den Pfad zur Hilfedatei dient.
Die $Namespace Variable enthält eine Hashtabelle, die den XML-Namespace darstellt, der für die Hilfedateien verwendet wird.
Die $Path Variable enthält den Pfad zu den PowerShell-Hilfedateien. Wenn auf ihrem Computer keine Hilfedateien vorhanden sind, verwenden Sie das Cmdlet Update-Help, um die Hilfedateien herunterzuladen. Weitere Informationen zur aktualisierbaren Hilfe finden Sie unter about_Updatable_Help.
Das cmdlet Select-Xml durchsucht die XML-Dateien nach Cmdlet-Namen, indem Command:Name Element an einer beliebigen Stelle in den Dateien gefunden wird. Die Ergebnisse werden in der variablen $Xml gespeichert.
Select-Xml gibt ein SelectXmlInfo--Objekt zurück, das eine Node--Eigenschaft aufweist. Dabei handelt es sich um ein System.Xml.XmlElement--Objekt.
Die Node-Eigenschaft verfügt über eine InnerXml--Eigenschaft, die den tatsächlich abgerufenen XML-Code enthält.
Die $Xml Variable wird an das Cmdlet Format-Table weitergeleitet. Der befehl Format-Table verwendet eine berechnete Eigenschaft, um die Node.InnerXml-Eigenschaft jedes Objekts in der $Xml Variablen abzurufen, den Leerraum vor und nach dem Text zu kürzen und in der Tabelle zusammen mit dem Path zur Quelldatei anzuzeigen.
$Namespace = @{
command = "http://schemas.microsoft.com/maml/dev/command/2004/10"
maml = "http://schemas.microsoft.com/maml/2004/10"
dev = "http://schemas.microsoft.com/maml/dev/2004/10"
}
$Path = "$PSHOME\en-US\*dll-Help.xml"
$Xml = Select-Xml -Path $Path -Namespace $Namespace -XPath "//command:name"
$Xml | Format-Table @{Label="Name"; Expression= {($_.Node.InnerXml).Trim()}}, Path -AutoSize
Name Path
---- ----
Export-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Get-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Get-WinEvent C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Import-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Add-Computer C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Management.dll-Help.xml
Add-Content C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Management.dll-Help.xml
Checkpoint-Computer C:\Windows\system32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Management.dll-Help.xml
...
Beispiel 4: Verschiedene Möglichkeiten zum Eingeben von XML
In diesem Beispiel werden zwei verschiedene Methoden zum Senden von XML an das Cmdlet Select-Xml gezeigt.
Der erste Befehl speichert eine here-Zeichenfolge, die XML in der variablen $Xml enthält. Weitere Informationen zu here-Zeichenfolgen finden Sie unter about_Quoting_Rules.
Select-Xml verwendet den Parameter Content, um den XML-Code in der variablen $Xml anzugeben.
Der dritte Befehl ist identisch mit der zweiten, mit der Ausnahme, dass tt einen Pipelineoperator (|) verwendet, um den XML-Code in der $Xml Variablen an das Cmdlet Select-Xml zu senden.
$Xml = @"
<?xml version="1.0" encoding="utf-8"?>
<Book>
<projects>
<project name="Book1" date="2009-01-20">
<editions>
<edition language="English">En.Book1.com</edition>
<edition language="German">Ge.Book1.Com</edition>
<edition language="French">Fr.Book1.com</edition>
<edition language="Polish">Pl.Book1.com</edition>
</editions>
</project>
</projects>
</Book>
"@
Select-Xml -Content $Xml -XPath "//edition" | foreach {$_.Node.InnerXml}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
$Xml | Select-Xml -XPath "//edition" | foreach {$_.Node.InnerXml}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
Beispiel 5: Verwenden des xmlns-Standardnamespaces
In diesem Beispiel wird gezeigt, wie Sie das cmdlet Select-Xml mit XML-Dokumenten verwenden, die den Standardnamespace xmlns verwenden. Das Beispiel ruft die Titel der vom Benutzer erstellten Codeausschnittdateien von Windows PowerShell ISE ab. Informationen zu Codeausschnitten finden Sie unter New-IseSnippet.
Die $SnippetNamespace Variable enthält eine Hashtabelle für den Standardnamespace, den CODEausschnitt-XML-Dateien verwenden. Der Hashtabellenwert ist der XMLNS-Schema-URI im Codeausschnitt-XML. Der Schlüsselname der Hashtabelle ist beliebig. Sie können einen namen verwenden, der nicht reserviert ist, aber Sie können xmlnsnicht verwenden.
Das cmdlet Select-Xml ruft den Inhalt des Title- Elements der einzelnen Codeausschnitte ab. Er verwendet den parameter Path, um das Codeausschnittverzeichnis und den parameter Namespace anzugeben, um den Namespace in der variablen $SnippetNamespace anzugeben. Der Wert des XPath--Parameters ist der snip:Title. Die Ergebnisse werden an das cmdlet ForEach-Object weitergeleitet, das den Titel aus dem Wert der InnerXml-Eigenschaft des Knotens abruft.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Parameter
-Content
Gibt eine Zeichenfolge an, die den zu durchsuchenden XML-Code enthält. Sie können auch Zeichenfolgen an Select-Xmlübergeben.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Content
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt die Pfade und Dateinamen der zu durchsuchenden XML-Dateien an. Im Gegensatz zu Path wird der Wert des LiteralPath-Parameters genau so verwendet, wie er eingegeben wurde. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath |
Parametersätze
LiteralPath
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Namespace
Gibt eine Hashtabelle der namespaces an, die im XML-Code verwendet werden. Verwenden Sie das Format@{<namespaceName> = <namespaceValue>}.
Wenn der XML-Code den Standardnamespace verwendet, der mit XMLns beginnt, verwenden Sie einen beliebigen Schlüssel für den Namespacenamen. Xmlns können nicht verwendet werden. Stellen Sie in der XPath-Anweisung jedem Knotennamen den Namespacenamen und einen Doppelpunkt voran, z. B. //namespaceName:Node.
Parametereigenschaften
| Typ: | Hashtable |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad und dateinamen der zu durchsuchenden XML-Dateien an. Platzhalterzeichen sind zulässig.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
Path
| Position: | 1 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Xml
Gibt mindestens einen XML-Knoten an.
Ein XML-Dokument wird als Sammlung von XML-Knoten verarbeitet. Wenn Sie ein XML-Dokument an Select-Xmlweitergeleitet haben, wird jeder Dokumentknoten separat durchsucht, wenn es durch die Pipeline geht.
Parametereigenschaften
| Typ: | XmlNode[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Knoten |
Parametersätze
Xml
| Position: | 1 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-XPath
Gibt eine XPath-Suchabfrage an. Bei der Abfragesprache wird die Groß-/Kleinschreibung beachtet. Dieser Parameter ist erforderlich.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
System.String or System.Xml.XmlNode
Sie können einen Pfad oder XML-Knoten an dieses Cmdlet weiterleiten.
Ausgaben
SelectXmlInfo
Hinweise
XPath ist eine Standardsprache, die zum Identifizieren von Teilen eines XML-Dokuments entwickelt wurde. Weitere Informationen zur XPath-Sprache finden Sie unter XPath Reference und im Abschnitt "Auswahlfilter" ereignisauswahl.