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-Xml
o , 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
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.
Links Relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de