Sdílet prostřednictvím


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

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í v knihovně MSDN.