Partager via


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 AliasProperty Nodes

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 XML dans le 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 affiche 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 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. Si ce chemin d’accès ne contient aucun fichier d’aide, 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 des noms d’applet de commande dans les fichiers XML 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 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 dans la $Xml variable, découper l’espace blanc avant et après le texte et 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 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 la même que la deuxième, sauf que tt utilise un opérateur de pipeline (|) pour envoyer le CODE XML dans 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 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 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, par exemple //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

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 dans Sélection d’événements.