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électionner des nœuds AliasProperty

Cet exemple obtient les propriétés d’alias dans le 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 du Types.ps1xml fichier. La commande utilise un opérateur de pipeline (|) pour envoyer les nœuds AliasProperty à l’applet Select-Object de 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 affiche le nom 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 Select-Xml de commande.

L’applet Get-Content de commande obtient le contenu du Types.ps1xml fichier et l’enregistre dans la $Types variable. Le [xml] cast de 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 : Rechercher des fichiers d’aide PowerShell

Cet exemple montre comment utiliser l’applet Select-Xml de commande 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 $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’existe aucun fichier d’aide dans ce chemin d’accès 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 fichiers XML pour les noms d’applets de commande en recherchant Command:Name l’élément n’importe où dans les fichiers. Les résultats sont stockés dans la $Xml variable. Select-Xml renvoie un objet SelectXmlInfo qui a une propriété Node , qui est un objet System.Xml.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, découper l’espace blanc avant et après le texte, puis l’afficher dans le tableau, 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 ici qui contient du code XML dans la $Xml variable. Pour plus d’informations sur les chaînes ici, 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 la même que la seconde, sauf que tt utilise un opérateur de pipeline (|) pour envoyer le code XML dans la $Xml variable à l’applet Select-Xml de 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 Select-Xml de commande 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 $SnippetNamespace variable contient une table de hachage pour l’espace de noms par défaut utilisé par les fichiers XML d’extrait 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 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 Des extraits de code et le paramètre Espace de noms pour spécifier l’espace de noms dans la $SnippetNamespace variable. La valeur du paramètre XPath est le snip:Title. Les résultats sont redirigé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 à Path, la valeur du paramètre LiteralPath est utilisée exactement comme elle est typé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 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, comme //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 est recherché séparément lors de son passage dans 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

SelectXmlInfo

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 de la sélection d’événements.