Select-Xml
Recherche du texte dans une chaîne ou un document XML.
Syntaxe
Xml (Par défaut)
Select-Xml
[-Xml] <XmlNode[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Path
Select-Xml
[-Path] <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
LiteralPath
Select-Xml
[-XPath] <String>
-LiteralPath <String[]>
[-Namespace <Hashtable>]
[<CommonParameters>]
Content
Select-Xml
[-XPath] <String>
-Content <String[]>
[-Namespace <Hashtable>]
[<CommonParameters>]
Description
L’applet de commande select-xml
Exemples
Exemple 1 : Sélectionner des nœuds AliasProperty
PS C:\> $Path = "$Pshome\Types.ps1xml"
PS C:\> $XPath = "/Types/Type/Members/AliasProperty"
PS C:\> 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
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 fichier Types.ps1xml dans la variable $Path.
La deuxième commande enregistre le chemin XML vers le nœud AliasProperty dans la variable $XPath.
La troisième commande utilise l’applet de commande Select-Xml
Le résultat montre le nom et referencedMemberName de chaque propriété d’alias dans le fichier Types.ps1xml.
Par exemple, il existe une propriété
Exemple 2 : Entrer un document XML
PS C:\> [xml]$Types = Get-Content $Pshome\Types.ps1xml
PS C:\> Select-Xml -Xml $Types -XPath "//MethodName"
Cet exemple montre comment utiliser le paramètre XML
La première commande utilise l’applet de commande Get-Content pour obtenir le contenu du fichier Types.ps1xml et l’enregistrer dans la variable $Types. Le [xml] convertit la variable en tant qu’objet XML.
La deuxième commande utilise l’applet de commande Select-Xml pour obtenir les nœuds MethodName dans le fichier Types.ps1xml.
La commande utilise le paramètre Xml
Exemple 3 : Rechercher des fichiers d’aide PowerShell
PS C:\> $Namespace = @{command = "https://schemas.microsoft.com/maml/dev/command/2004/10"; maml = "https://schemas.microsoft.com/maml/2004/10"; dev = "https://schemas.microsoft.com/maml/dev/2004/10"}
The second command saves the path to the help files in the $Path variable.If there are no help files in this path on your computer, use the Update-Help cmdlet to download the help files. For more information about Updatable Help, see about_Updatable_Help (https://go.microsoft.com/fwlink/?LinkId=235801).
PS C:\> $Path = "$Pshome\en-us\*dll-Help.xml"
The third command uses the **Select-Xml** cmdlet to search the XML for cmdlet names by finding Command:Name element anywhere in the files. It saves the results in the $Xml variable.**Select-Xml** returns a **SelectXmlInfo** object that has a Node property, which is a **System.Xml.XmlElement** object. The Node property has an InnerXML property, which contains the actual XML that is retrieved.
PS C:\> $Xml = Select-Xml -Path $Path -Namespace $Namespace -XPath "//command:name"
The fourth command sends the XML in the $Xml variable to the Format-Table cmdlet. The **Format-Table** command uses a calculated property to get the Node.InnerXML property of each object in the $Xml variable, trim the white space before and after the text, and display it in the table, along with the path to the source file.
PS C:\> $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
...
Cet exemple montre comment utiliser l’applet de commande Select-Xml pour rechercher dans les fichiers d’aide de l’applet de commande XML PowerShell. 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 première commande crée une table de hachage qui représente l’espace de noms XML utilisé pour les fichiers d’aide et l’enregistre dans la variable $Namespace.
Exemple 4 : Différentes façons d’entrer du code XML
PS C:\> $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>
"@
The second command uses the *Content* parameter of **Select-Xml** to specify the XML in the $Xml variable.
PS C:\> Select-Xml -Content $Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
The third command is equivalent to the second. It uses a pipeline operator (|) to send the XML in the $Xml variable to the **Select-Xml** cmdlet.
PS C:\> $Xml | Select-Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
Cet exemple montre deux façons différentes d’envoyer du code XML à l’applet de commande Select-Xml
La première commande enregistre une chaîne ici qui contient du code XML dans la variable $Xml. (Pour plus d’informations sur les chaînes ici, consultez about_Quoting_Rules.)
Exemple 5 : Utiliser l’espace de noms xmlns par défaut
PS C:\> $SnippetNamespace = @{snip = "https://schemas.microsoft.com/PowerShell/Snippets"}
The second command uses the **Select-Xml** cmdlet to get the content of the Title element of each snippet. It uses the *Path* parameter to specify the Snippets directory and the *Namespace* parameter to specify the namespace in the $SnippetNamespace variable. The value of the *XPath* parameter is the "snip" namespace key, a colon (:), and the name of the Title element.The command uses a pipeline operator (|) to send each **Node** property that **Select-Xml** returns to the ForEach-Object cmdlet, which gets the title in the value of the **InnerXml** property of the node.
PS C:\> Select-Xml -Path $Home\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" | foreach {$_.Node.Innerxml}
Cet exemple montre comment utiliser l’applet de commande Select-Xml avec des 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 première commande crée une table de hachage pour l’espace de noms par défaut utilisé par les fichiers XML de l’extrait de code et l’affecte à la variable $SnippetNamespace. La valeur de la table de hachage est l’URI de schéma XMLNS dans l’extrait de code XML. Le nom de clé de 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.
Paramètres
-Content
Spécifie une chaîne qui contient le code XML à rechercher. Vous pouvez également diriger des chaînes vers Select-Xml .
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
Content
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-LiteralPath
Spécifie les chemins d’accès et les noms de fichiers des fichiers XML à rechercher. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement comme il est typé. 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 séquences d’échappement.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | PSPath |
Jeux de paramètres
LiteralPath
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | 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, par exemple //namespaceName :Node.
Propriétés du paramètre
| Type: | Hashtable |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Path
Spécifie le chemin d’accès et les noms de fichiers des fichiers XML à rechercher. Les caractères génériques sont autorisés.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
Path
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Xml
Spécifie un ou plusieurs nœuds XML.
Un document XML sera traité en tant que collection de nœuds XML. Si vous dirigez un document XML vers Select-Xml, chaque nœud de document est recherché séparément lors de son passage dans le pipeline.
Propriétés du paramètre
| Type: | XmlNode[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | Nœud |
Jeux de paramètres
Xml
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-XPath
Spécifie une requête de recherche XPath. Le langage de requête respecte la casse. Ce paramètre est obligatoire.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
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
SelectXmlInfo
Notes
- XPath est un langage standard 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 du Event Selection dans la bibliothèque MSDN.