Sdílet prostřednictvím


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-Xmlvrátí SelectXmlInfo objekt, který má Node vlastnost, což je System.Xml.XmlElement objekt. Vlastnost Nodevlastnost 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-Xmlpouží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-XmlXML, 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

SelectXmlInfo

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.