Share via


Select-Xml

Localiza texto em uma cadeia de caracteres ou documento XML.

Syntax

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 XML e documentos. 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 Nome e 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: Pesquisa arquivos de Ajuda do PowerShell

Este exemplo mostra como usar o Select-Xml cmdlet para pesquisar os arquivos de ajuda do cmdlet baseado 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 no 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 System.Xml. Objeto 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 variável, cortar o espaço em $Xml 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 cadeias de caracteres aqui, 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 os 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 namespace na $SnippetNamespace 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 redirecionar cadeias de caracteres para Select-Xml.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 foi digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Namespace

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

Quando o XML usa 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.

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

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

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Xml

Especifica um ou mais nós XML.

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

Type:XmlNode[]
Aliases:Node
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-XPath

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Entradas

System.String or System.Xml.XmlNode

Você pode redirecionar 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 do XPath e a seção Filtros de Seleção da Seleção de Eventos.