Select-Xml
Najde text v řetězci NEBO dokumentu XML.
Syntax
Xml (Výchozí)
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>]
Description
Rutina Select-Xml umožňuje pomocí dotazů XPath vyhledávat text 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
Tento příklad získá vlastnosti aliasu v Types.ps1xml. Informace o tomto souboru naleznete 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.
Rutina Select-Xml získá AliasProperty uzly identifikované příkazem XPath ze souboru Types.ps1xml. Příkaz pomocí operátoru kanálu (|) odešle AliasProperty uzly do rutiny Select-Object. Parametr ExpandProperty rozbalí objekt Node Node a vrátí jeho Name a ReferencedMemberName vlastnosti.
$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
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
Tento příklad ukazuje, jak pomocí parametru XML poskytnout dokumentu XML rutině Select-Xml.
Rutina Get-Content získá obsah souboru Types.ps1xml a uloží ho do proměnné $Types.
[xml] přetypuje proměnnou jako objekt XML.
Rutina Select-Xml získá uzly MethodName v souboru Types.ps1xml. Příkaz pomocí parametru Xml určuje obsah XML v proměnné $Types a parametr XPath určit cestu k uzlu MethodName.
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Příklad 3: Hledání souborů nápovědy PowerShellu
Tento příklad ukazuje, jak pomocí rutiny Select-Xml prohledat soubory nápovědy pro rutiny založené na JAZYCE 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.
Proměnná $Namespace obsahuje tabulku hash, která představuje obor názvů XML, který se používá pro soubory nápovědy.
Proměnná $Path obsahuje cestu k souborům nápovědy PowerShellu. Pokud v tomto počítači nejsou žádné soubory nápovědy, stáhněte soubory nápovědy pomocí rutiny Update-Help. Další informace o aktualizovatelné nápovědě naleznete v tématu about_Updatable_Help.
Rutina Select-Xml prohledává názvy rutin XML vyhledáním Command:Name elementu kdekoli v souborech. Výsledky jsou uloženy v proměnné $Xml.
Select-Xml vrátí SelectXmlInfo objekt, který má vlastnost Node, což je System.XmlElement objektu.
Vlastnost Node má vlastnost InnerXML, která obsahuje skutečný kód XML, který se načte.
Proměnná $Xml se předá do rutiny Format-Table. Příkaz Format-Table používá počítanou vlastnost k získání vlastnosti Node.InnerXML každého objektu v proměnné $Xml, oříznout prázdné znaky před a za textem a zobrazit ho v tabulce spolu s Path ke zdrojovému souboru.
$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
...
Příklad 4: Různé způsoby zadávání XML
Tento příklad ukazuje dva různé způsoby odeslání XML do Select-Xml rutiny.
První příkaz uloží řetězec sem, který obsahuje XML v proměnné $Xml. Další informace o řetězcích zde naleznete v tématu about_Quoting_Rules.
Select-Xml používá parametr Content k určení XML v proměnné $Xml.
Třetí příkaz je stejný jako druhý, s tím rozdílem, že tt používá operátor kanálu (|) k odeslání XML v proměnné $Xml do Select-Xml rutiny.
$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
Příklad 5: Použití výchozího oboru názvů xmlns
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 o fragmentech kódu najdete v tématu New-IseSnippet.
Proměnná $SnippetNamespace obsahuje tabulku hash výchozího oboru názvů, který fragmentuje soubory XML. Hodnota hash tabulky je identifikátor URI schématu XMLNS v xml fragmentu kódu. Název klíče tabulky hash, výnip, je libovolný. Můžete použít libovolný název, který není rezervován, ale nemůžete použít xmlns.
Rutina Select-Xml získá obsah elementu Title každého fragmentu kódu. Pomocí parametru Path určuje adresář Fragments a parametr Namespace k určení oboru názvů v proměnné $SnippetNamespace. Hodnota parametru XPath je snip:Title. Výsledky se předávají do rutiny ForEach-Object, která získá název z hodnoty InnerXml vlastnosti uzlu.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Parametry
-Content
Určuje řetězec, který obsahuje XML pro vyhledávání. Řetězce můžete také pipetovat do Select-Xml.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Content
| Position: | Named |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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ý znak není interpretován jako zástupný znak. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | PSPath, PO |
Sady parametrů
LiteralPath
| Position: | Named |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | 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ý název uzlu názvem oboru názvů a dvojtečka, například //namespaceName:Node.
Vlastnosti parametru
| Typ: | Hashtable |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Path
Určuje cestu a názvy souborů XML, které se mají prohledávat. Jsou povoleny zástupné znaky.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | True |
| DontShow: | False |
Sady parametrů
Path
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-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.
Vlastnosti parametru
| Typ: | XmlNode[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Node |
Sady parametrů
Xml
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-XPath
Určuje vyhledávací dotaz XPath. Dotazovací jazyk rozlišují malá a velká písmena. Tento parametr je povinný.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
System.String or System.Xml.XmlNode
K této rutině můžete přeskakovat cestu nebo uzel XML.
Výstupy
SelectXmlInfo
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í.