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