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 para o 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 ReferencedMemberName de cada propriedade 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 Types.ps1xml conteúdo do 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 $Types conteúdo XML na 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 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 procura nomes de cmdlets nos arquivos XML localizando Command:Name elementos em qualquer lugar dos 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 que é 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 XML na 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 trechos, consulte New-IseSnippet.

A $SnippetNamespace variável contém uma tabela de hash para o namespace padrão que os arquivos XML de trechos 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 trecho. 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 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 é 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
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. Não é possível 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ê canalizar um documento XML para Select-Xmlo , cada nó do documento será pesquisado separadamente à medida que ele passa 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 é obrigató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 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.