Compartilhar via


Select-Xml

Localiza texto em uma cadeia de caracteres ou documento XML.

Sintaxe

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

O Select-Xml cmdlet permite que você use consultas XPath para pesquisar texto em cadeias de caracteres e documentos XML. Insira uma consulta XPath e use o parâmetro Content, Path ou Xml para especificar o XML a ser pesquisado.

Exemplos

Exemplo 1: Selecionar nós AliasProperty

Este exemplo obtém as propriedades de alias no Types.ps1xml. Para obter informações sobre esse arquivo, consulte about_Types.ps1xml.

O primeiro comando salva o caminho para o Types.ps1xml arquivo na $Path variável.

O segundo comando salva o caminho XML no nó AliasProperty na $XPath variável.

O Select-Xml cmdlet obtém os nós AliasProperty identificados pela instrução XPath do Types.ps1xml arquivo. O comando usa um operador de pipeline (|) para enviar os nós AliasProperty para o Select-Object cmdlet. O parâmetro ExpandProperty expande o objeto Node e retorna suas propriedades Name e ReferencedMemberName .

$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

O resultado mostra o Name e o ReferencedMemberName de cada propriedade de alias no Types.ps1xml arquivo. Por exemplo, há uma propriedade Count que é um alias da propriedade Length .

Exemplo 2: Inserir um documento XML

Este exemplo mostra como usar o parâmetro XML para fornecer um documento XML ao Select-Xml cmdlet.

O Get-Content cmdlet obtém o conteúdo do Types.ps1xml arquivo e o salva na $Types variável. O [xml] converte a variável como um objeto XML.

O Select-Xml cmdlet obtém os nós MethodName no Types.ps1xml arquivo. O comando usa o parâmetro Xml para especificar o conteúdo XML na $Types variável e o parâmetro XPath para especificar o caminho para o nó MethodName .

[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"

Exemplo 3: Pesquisar arquivos de Ajuda do PowerShell

Este exemplo mostra como usar o Select-Xml cmdlet para pesquisar os arquivos de ajuda do cmdlet baseados em XML do PowerShell. Neste exemplo, pesquisaremos pelo nome do cmdlet que serve como título para cada arquivo de Ajuda e o caminho para o arquivo de Ajuda.

A $Namespace variável contém uma tabela de hash que representa o namespace XML usado para os arquivos de ajuda.

A $Path variável contém o caminho para os arquivos de ajuda do PowerShell. Se não houver arquivos de ajuda nesse caminho em seu computador, use o Update-Help cmdlet para baixar os arquivos de ajuda. Para obter mais informações sobre a Ajuda atualizável, consulte about_Updatable_Help.

O Select-Xml cmdlet pesquisa os arquivos XML em busca de nomes de cmdlet localizando Command:Name o elemento em qualquer lugar nos arquivos. Os resultados são armazenados na $Xml variável. Select-Xml retorna um objeto SelectXmlInfo que tem uma propriedade Node , que é um objeto System.Xml.XmlElement . A propriedade Node tem uma propriedade InnerXML que contém o XML real recuperado.

A $Xml variável é canalizada para o Format-Table cmdlet. O Format-Table comando usa uma propriedade calculada para obter a propriedade Node.InnerXML de cada objeto na $Xml variável, cortar o espaço em branco antes e depois do texto e exibi-lo na tabela, juntamente com o Caminho para o arquivo de origem.

$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
...

Exemplo 4: Diferentes maneiras de inserir XML

Este exemplo mostra duas maneiras diferentes de enviar XML para o Select-Xml cmdlet.

O primeiro comando salva uma cadeia de caracteres aqui que contém XML na $Xml variável. Para obter mais informações sobre here-strings, consulte about_Quoting_Rules.

Select-Xml usa o parâmetro Content para especificar o XML na $Xml variável.

O terceiro comando é o mesmo que o segundo, exceto que tt usa um operador de pipeline (|) para enviar o XML na $Xml variável para o Select-Xml cmdlet.

$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

Exemplo 5: Usar o namespace xmlns padrão

Este exemplo mostra como usar o Select-Xml cmdlet com documentos XML que usam o namespace xmlns padrão. O exemplo obtém os títulos dos arquivos de snippet do Windows PowerShell ISE criados pelo usuário. Para obter informações sobre snippets, consulte New-IseSnippet.

A $SnippetNamespace variável contém uma tabela de hash para o namespace padrão que os arquivos XML de snippet usam. O valor da tabela de hash é o URI do esquema XMLNS no snippet XML. O nome da chave da tabela de hash, snip, é arbitrário. Você pode usar qualquer nome que não esteja reservado, mas não pode usar xmlns.

O Select-Xml cmdlet obtém o conteúdo do elemento Title de cada snippet. Ele usa o parâmetro Path para especificar o diretório Snippets e o parâmetro Namespace para especificar o $SnippetNamespace namespace na variável. O valor do parâmetro XPath é o snip:Title. Os resultados são canalizados para o ForEach-Object cmdlet, que obtém o título do valor da propriedade InnerXml do nó.

$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}

Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
    ForEach-Object {$_.Node.Innerxml}

Parâmetros

-Content

Especifica uma cadeia de caracteres que contém o XML a ser pesquisado. Você também pode canalizar strings para Select-Xml.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-LiteralPath

Especifica os caminhos e nomes de arquivo dos arquivos XML a ser pesquisado. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples informam ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Tipo:String[]
Aliases:PSPath
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Namespace

Especifica uma tabela de hash de namespaces utilizados no XML. Use o formato @{<namespaceName> = <namespaceValue>}.

Quando o XML usar o namespace padrão, que começa com xmlns, use uma chave arbitrária para o nome do namespace. Você não pode usar xmlns. Na instrução XPath, prefixe cada nome de nó com o nome do namespace e dois-pontos, como //namespaceName:Node.

Tipo:Hashtable
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Path

Especifica os nomes do caminho e do arquivo XML a ser pesquisado. Caracteres curinga são permitidos.

Tipo:String[]
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-Xml

Especifica um ou mais nós XML.

Um documento XML será processado como uma coleção de nós XML. Se você canalizar um documento XML para Select-Xml, cada nó do documento será pesquisado separadamente à medida que passar pelo pipeline.

Tipo:XmlNode[]
Aliases:Node
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-XPath

Especifica uma consulta de pesquisa XPath. A linguagem de consulta diferencia maiúsculas de minúsculas. Este parâmetro é obrigatório.

Tipo:String
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

System.String or System.Xml.XmlNode

Você pode canalizar um caminho ou nó XML para esse cmdlet.

Saídas

SelectXmlInfo

Observações

O XPath é uma linguagem padrão que foi projetada para identificar partes de um documento XML. Para obter mais informações sobre a linguagem XPath, consulte Referência XPath e a seção Filtros de seleção de Seleção de eventos.