Partager via


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 vous permet d’utiliser des requêtes XPath pour rechercher du texte dans des chaînes xml et des documents. Entrez une requête XPath et utilisez lede contenu , Chemin d’accèsou paramètre xml pour spécifier le code XML à rechercher.

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 pour obtenir les nœuds AliasProperty identifiés par l’instruction XPath à partir du fichier Types.ps1xml. La commande utilise un opérateur de pipeline pour envoyer les nœuds AliasProperty à l’applet de commande Select-Object. Le paramètre ExpandProperty développe l’objet Node et retourne ses propriétés Name et ReferencedMemberName.

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é Count qui est un alias de la propriété Length .

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 pour fournir un document XML à l’applet de commande Select-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 pour spécifier le contenu XML dans la variable $Types et le paramètre XPath pour spécifier le chemin d’accès au nœud MethodName.

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.