Select-Xml
Najde text v řetězci NEBO dokumentu XML.
Syntaxe
Select-Xml
[-XPath] <string>
[-Xml] <XmlNode[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
[-Path] <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
-LiteralPath <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
-Content <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í parametru Content, Path nebo Xml 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 objektu Types.ps1xml
. Informace o tomto souboru naleznete v tématu about_Types.ps1xml.
První příkaz uloží cestu k Types.ps1xml
souboru v $Path
proměnné.
Druhý příkaz uloží cestu XML do uzlu AliasProperty v $XPath
proměnné.
Rutina Select-Xml
získá uzly AliasProperty , které jsou identifikovány příkazem XPath ze Types.ps1xml
souboru. Příkaz pomocí operátoru kanálu (|
) odešle do rutiny Select-Object
uzly AliasProperty. ExpandProperty parametr rozbalí Node objekt 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 Types.ps1xml
v souboru. 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 Types.ps1xml
souboru a uloží ho $Types
do proměnné. Přetypuje [xml]
proměnnou jako objekt XML.
Rutina Select-Xml
získá uzly MethodName v Types.ps1xml
souboru. Příkaz pomocí parametru Xml určuje obsah XML v $Types
proměnné a parametr XPath k určení cesty 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
V tomto příkladu Select-Xml
se dozvíte, jak pomocí rutiny prohledat soubory nápovědy k rutinám 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.
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 této cestě v počítači nejsou žádné soubory nápovědy, stáhněte soubory nápovědy pomocí Update-Help
rutiny. Další informace o aktualizovatelné nápovědě najdete v tématu about_Updatable_Help.
Rutina Select-Xml
hledá názvy rutin v souborech XML vyhledáním Command:Name
elementu kdekoli v souborech. Výsledky jsou uloženy v $Xml
proměnné. Select-Xml
vrátí SelectXmlInfo objekt, který má Node vlastnost, což je System.Xml.XmlElement objekt.
Vlastnost Node má vlastnost InnerXML , která obsahuje skutečný kód XML, který je načten.
Proměnná $Xml
se předá rutině Format-Table
. Příkaz Format-Table
pomocí počítané vlastnosti získá Node.InnerXML vlastnost každého objektu $Xml
v proměnné, oříznout prázdné znaky před a za text a zobrazit ji v tabulce spolu s Cestou 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 rutiny Select-Xml
.
První příkaz uloží řetězec sem, který obsahuje xml v $Xml
proměnné. Další informace o tomto řetězci najdete v tématu about_Quoting_Rules.
Select-Xml
používá parametr Content k určení XML v $Xml
proměnné.
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 $Xml
proměnné do rutiny Select-Xml
.
$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žít 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
Proměnná $SnippetNamespace
obsahuje tabulku hash výchozího oboru názvů, který používá fragment souborů XML. 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.
Rutina Select-Xml
získá obsah elementu Title každého fragmentu kódu. Pomocí parametru Path určuje adresář Fragmenty kódu a parametr Namespace k určení oboru názvů v $SnippetNamespace
proměnné. Hodnota parametru XPath je snip:Title
. Výsledky se předávají rutině ForEach-Object
, která získá název z hodnoty vlastnosti InnerXml 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é převést na 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 cesty se hodnota parametru LiteralPath používá přesně tak, jak je zadána. Žá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, LP |
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ý název 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 Select-Xml
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 jazyku XPath naleznete v tématu Odkaz XPath a oddíl Filtry výběru události.