Select-Xml
Najde text v řetězci NEBO dokumentu XML.
Syntaxe
Select-Xml
[-Xml] <XmlNode[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
[-Path] <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-LiteralPath <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-Content <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Description
Rutina Select-Xml umožňuje použít dotazy XPath k hledání textu v řetězcích XML a dokumentech. Zadejte dotaz XPath a pomocí Content, Pathnebo Xml parametr zadejte XML, který se má prohledávat.
Příklady
Příklad 1: Výběr uzlů AliasProperty
PS C:\> $Path = "$Pshome\Types.ps1xml"
PS C:\> $XPath = "/Types/Type/Members/AliasProperty"
PS C:\> 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
Tento příklad získá vlastnosti aliasu v Types.ps1xml. (Informace o tomto souboru najdete v tématu about_Types.ps1xml.)
První příkaz uloží cestu k souboru Types.ps1xml v proměnné $Path.
Druhý příkaz uloží cestu XML do uzlu AliasProperty v proměnné $XPath.
Třetí příkaz používá rutinu Select-Xml k získání uzlů AliasProperty identifikovaných příkazem XPath ze souboru Types.ps1xml. Příkaz pomocí operátoru kanálu odešle uzly AliasProperty do rutiny Select-Object. Parametr ExpandProperty rozbalí Node objekt a vrátí jeho vlastnosti Name a ReferencedMemberName.
Výsledek zobrazuje Název a ReferencedMemberName každé vlastnosti aliasu v souboru Types.ps1xml. Existuje například vlastnost Count, která je aliasem vlastnosti Length.
Příklad 2: Zadání dokumentu XML
PS C:\> [xml]$Types = Get-Content $Pshome\Types.ps1xml
PS C:\> Select-Xml -Xml $Types -XPath "//MethodName"
Tento příklad ukazuje, jak pomocí parametru XML poskytnout dokumentu XML rutině Select-Xml.
První příkaz používá rutinu Get-Content k získání obsahu souboru Types.ps1xml a jeho uložení do proměnné $Types. [xml] přetypuje proměnnou jako objekt XML.
Druhý příkaz používá rutinu Select-Xml k získání uzlů MethodName v souboru Types.ps1xml. Příkaz pomocí parametru Xml určuje obsah XML v proměnné $Types a parametr XPath k určení cesty k uzlu MethodName.
Příklad 3: Hledání souborů nápovědy PowerShellu
PS C:\> $Namespace = @{command = "https://schemas.microsoft.com/maml/dev/command/2004/10"; maml = "https://schemas.microsoft.com/maml/2004/10"; dev = "https://schemas.microsoft.com/maml/dev/2004/10"}
The second command saves the path to the help files in the $Path variable.If there are no help files in this path on your computer, use the Update-Help cmdlet to download the help files. For more information about Updatable Help, see about_Updatable_Help (https://go.microsoft.com/fwlink/?LinkId=235801).
PS C:\> $Path = "$Pshome\en-us\*dll-Help.xml"
The third command uses the **Select-Xml** cmdlet to search the XML for cmdlet names by finding Command:Name element anywhere in the files. It saves the results in the $Xml variable.**Select-Xml** returns a **SelectXmlInfo** object that has a Node property, which is a **System.Xml.XmlElement** object. The Node property has an InnerXML property, which contains the actual XML that is retrieved.
PS C:\> $Xml = Select-Xml -Path $Path -Namespace $Namespace -XPath "//command:name"
The fourth command sends the XML in the $Xml variable to the Format-Table cmdlet. The **Format-Table** command uses a calculated property to get the Node.InnerXML property of each object in the $Xml variable, trim the white space before and after the text, and display it in the table, along with the path to the source file.
PS C:\> $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
...
Tento příklad ukazuje, jak pomocí rutiny Select-Xml prohledat soubory nápovědy k rutinám založeným na JAZYCE XML PowerShellu. V tomto příkladu vyhledáme název rutiny, který slouží jako název pro každý soubor nápovědy a cestu k souboru nápovědy.
První příkaz vytvoří tabulku hash, která představuje obor názvů XML, který se používá pro soubory nápovědy, a uloží ji do proměnné $Namespace.
Příklad 4: Různé způsoby zadávání XML
PS C:\> $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>
"@
The second command uses the *Content* parameter of **Select-Xml** to specify the XML in the $Xml variable.
PS C:\> Select-Xml -Content $Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
The third command is equivalent to the second. It uses a pipeline operator (|) to send the XML in the $Xml variable to the **Select-Xml** cmdlet.
PS C:\> $Xml | Select-Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
Tento příklad ukazuje dva různé způsoby odeslání XML do rutiny Select-Xml.
První příkaz uloží řetězec sem, který obsahuje XML v proměnné $Xml. (Další informace o tomto řetězci najdete v tématu about_Quoting_Rules.)
Příklad 5: Použití výchozího oboru názvů xmlns
PS C:\> $SnippetNamespace = @{snip = "https://schemas.microsoft.com/PowerShell/Snippets"}
The second command uses the **Select-Xml** cmdlet to get the content of the Title element of each snippet. It uses the *Path* parameter to specify the Snippets directory and the *Namespace* parameter to specify the namespace in the $SnippetNamespace variable. The value of the *XPath* parameter is the "snip" namespace key, a colon (:), and the name of the Title element.The command uses a pipeline operator (|) to send each **Node** property that **Select-Xml** returns to the ForEach-Object cmdlet, which gets the title in the value of the **InnerXml** property of the node.
PS C:\> Select-Xml -Path $Home\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" | foreach {$_.Node.Innerxml}
Tento příklad ukazuje, jak používat rutinu Select-Xml s dokumenty XML, které používají výchozí obor názvů xmlns. Příklad získá názvy souborů fragmentů kódu vytvořeného uživatelem prostředí Windows PowerShell ISE. Informace ofragmentch
První příkaz vytvoří tabulku hash výchozího oboru názvů, který fragmentuje soubory XML a přiřadí ji k proměnné $SnippetNamespace. Hodnota hash tabulky je identifikátor URI schématu XMLNS v xml fragmentu kódu. Název klíče tabulky hash, výsnip, je libovolný. Můžete použít libovolný název, který není vyhrazený, ale nemůžete použít xmlns.
Parametry
-Content
Určuje řetězec, který obsahuje XML pro vyhledávání. Řetězce můžete také pipetovat do Select-Xml .
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje cesty a názvy souborů XML, které se mají prohledávat. Na rozdíl od Pathse hodnota parametru LiteralPath používá přesně tak, jak je zadán. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Namespace
Určuje hashovací tabulku oborů názvů použitých v jazyce XML. Použijte formát @{<namespaceName> = <namespaceValue>}.
Pokud XML používá výchozí obor názvů, který začíná xmlns, použijte libovolný klíč pro název oboru názvů. Nelze použít xmlns. V příkazu XPath předpona každého názvu uzlu názvem oboru názvů a dvojtečka, například //namespaceName:Node.
Typ: | Hashtable |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu a názvy souborů XML, které se mají prohledávat. Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-Xml
Určuje jeden nebo více uzlů XML.
Dokument XML bude zpracován jako kolekce uzlů XML. Pokud předáte dokument XML do Select-Xml, bude každý uzel dokumentu prohledána samostatně, protože prochází kanálem.
Typ: | XmlNode[] |
Aliasy: | Node |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-XPath
Určuje vyhledávací dotaz XPath. Dotazovací jazyk rozlišují malá a velká písmena. Tento parametr je povinný.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
System.String or System.Xml.XmlNode
K této rutině můžete přeskakovat cestu nebo uzel XML.
Výstupy
Poznámky
- XPath je standardní jazyk, který je navržený k identifikaci částí dokumentu XML. Další informace o jazyce XPath naleznete v tématu referenční XPath a oddíl Filtry výběru výběr událostí v knihovně MSDN.