Select-Xml
Recherche du texte dans un document ou une chaîne 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
L’applet Select-Xml
de commande vous permet d’utiliser des requêtes XPath pour rechercher du texte dans des chaînes et des documents XML.
Entrez une requête XPath et utilisez le paramètre Content, Path ou Xml pour spécifier le code XML à rechercher.
Exemples
Exemple 1 : Sélectionnez AliasProdux de propriété
Cet exemple obtient les propriétés d’alias dans .Types.ps1xml
Pour plus d’informations sur ce fichier, consultez about_Types.ps1xml.
La première commande enregistre le chemin d’accès au Types.ps1xml
fichier dans la $Path
variable .
La deuxième commande enregistre le chemin d’accès XML au nœud AliasProperty dans la $XPath
variable.
L’applet Select-Xml
de commande obtient les nœuds AliasProperty identifiés par l’instruction XPath à partir du Types.ps1xml
fichier. La commande utilise un opérateur de pipeline (|
) pour envoyer les nœuds AliasProperty à l’applet de Select-Object
commande. Le paramètre ExpandProperty développe l’objet Node et retourne ses propriétés Name et 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
Le résultat montre les valeurs Name et ReferencedMemberName de chaque propriété d’alias dans le Types.ps1xml
fichier. Par exemple, il existe une propriété Count qui est un alias de la propriété Length .
Exemple 2 : Entrer un document XML
Cet exemple montre comment utiliser le paramètre XML pour fournir un document XML à l’applet de Select-Xml
commande.
L’applet Get-Content
de commande obtient le contenu du Types.ps1xml
fichier et l’enregistre dans la $Types
variable. Le [xml]
caste la variable en tant qu’objet XML.
L’applet Select-Xml
de commande obtient les nœuds MethodName dans le Types.ps1xml
fichier. La commande utilise le paramètre Xml pour spécifier le contenu XML dans la $Types
variable et le paramètre XPath pour spécifier le chemin d’accès au nœud MethodName .
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Exemple 3 : Recherche fichiers d’aide PowerShell
Cet exemple montre comment utiliser l’applet de Select-Xml
commande pour rechercher dans les fichiers d’aide de l’applet de commande PowerShell XML. Dans cet exemple, nous allons rechercher le nom de l'applet de commande qui sert de titre pour chaque fichier d'aide et le chemin d'accès au fichier d'aide.
La $Namespace
variable contient une table de hachage qui représente l’espace de noms XML utilisé pour les fichiers d’aide.
La $Path
variable contient le chemin d’accès aux fichiers d’aide PowerShell. S’il n’y a aucun fichier d’aide dans ce chemin sur votre ordinateur, utilisez l’applet Update-Help
de commande pour télécharger les fichiers d’aide. Pour plus d’informations sur l’aide pouvant être mise à jour, consultez about_Updatable_Help.
L’applet Select-Xml
de commande recherche les noms d’applet de commande dans les fichiers XML en recherchant Command:Name
un élément n’importe où dans les fichiers. Les résultats sont stockés dans la $Xml
variable. Select-Xml
retourne un objet SelectXmlInfo qui a une propriété Node , qui est une System.Xml. Objet XmlElement .
La propriété Node a une propriété InnerXML qui contient le code XML réel récupéré.
La $Xml
variable est redirigée vers l’applet de Format-Table
commande. La Format-Table
commande utilise une propriété calculée pour obtenir la propriété Node.InnerXML de chaque objet de la $Xml
variable, réduire l’espace blanc avant et après le texte et l’afficher dans la table, ainsi que le chemin d’accès au fichier source.
$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
...
Exemple 4 : Différentes façons d’entrer du code XML
Cet exemple montre deux façons différentes d’envoyer du CODE XML à l’applet de Select-Xml
commande.
La première commande enregistre une chaîne de type here qui contient du code XML dans la $Xml
variable. Pour plus d’informations sur les chaînes here, consultez about_Quoting_Rules.
Select-Xml
utilise le paramètre Content pour spécifier le code XML dans la $Xml
variable.
La troisième commande est identique à la deuxième, sauf que tt utilise un opérateur de pipeline (|
) pour envoyer le code XML de la $Xml
variable à l’applet de Select-Xml
commande.
$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
Exemple 5 : Utiliser l’espace de noms xmlns par défaut
Cet exemple montre comment utiliser l’applet de commande avec des Select-Xml
documents XML qui utilisent l’espace de noms xmlns par défaut. L'exemple obtient les titres des fichiers d'extraits de code créés par l'utilisateur Windows PowerShell ISE. Pour plus d'informations sur les extraits de code, consultez New-IseSnippet.
La $SnippetNamespace
variable contient une table de hachage pour l’espace de noms par défaut utilisé par les fichiers XML d’extraits de code. La valeur de table de hachage est l'URI du schéma XMLNS dans le fichier XML d'extraits de code. Le nom de clé de la table de hachage, snip, est arbitraire. Vous pouvez utiliser n’importe quel nom qui n’est pas réservé, mais vous ne pouvez pas utiliser xmlns.
L’applet Select-Xml
de commande obtient le contenu de l’élément Title de chaque extrait de code. Il utilise le paramètre Path pour spécifier le répertoire Snippets et le paramètre Namespace pour spécifier l’espace de noms dans la $SnippetNamespace
variable. La valeur du paramètre XPath est .snip:Title
Les résultats sont dirigés vers l’applet ForEach-Object
de commande, qui obtient le titre à partir de la valeur de la propriété InnerXml du nœud.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $Home\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Paramètres
-Content
Spécifie une chaîne qui contient le code XML dans lequel effectuer des recherches. Vous pouvez également diriger des chaînes vers Select-Xml
.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Spécifie les chemins d'accès et les noms des fichiers XML dans lequel effectuer des recherches. Contrairement au paramètre Path, la valeur du paramètre LiteralPath est utilisée exactement telle qu'elle est tapée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme des séquences d’échappement.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Namespace
Spécifie une table de hachage des espaces de noms utilisés dans le code XML. Utilisez le format @{<namespaceName> = <namespaceValue>}
.
Lorsque le code XML utilise l’espace de noms par défaut, qui commence par xmlns, utilisez une clé arbitraire pour le nom de l’espace de noms. Vous ne pouvez pas utiliser xmlns. Dans l’instruction XPath, préfixez chaque nom de nœud avec le nom de l’espace de noms et un signe deux-points, tel que //namespaceName:Node
.
Type: | Hashtable |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Spécifie le chemin d'accès et les noms des fichiers XML dans lequel effectuer des recherches. Les caractères génériques sont autorisés.
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Xml
Spécifie un ou plusieurs nœuds XML.
Un document XML est traité comme une collection de nœuds XML. Si vous dirigez un document XML vers Select-Xml
, chaque nœud de document fait l’objet d’une recherche distincte à mesure qu’il passe par le pipeline.
Type: | XmlNode[] |
Aliases: | Node |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-XPath
Spécifie une requête de recherche XPath. Le langage de requête respecte la casse. Ce paramètre est obligatoire.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
System.String or System.Xml.XmlNode
Vous pouvez diriger un chemin d’accès ou un nœud XML vers cette applet de commande.
Sorties
Notes
XPath est un langage standard qui est conçu pour identifier les parties d'un document XML. Pour plus d’informations sur le langage XPath, consultez Référence XPath et la section Filtres de sélection dans Sélection d’événements.