Udostępnij za pośrednictwem


Select-Xml

Znajduje tekst w ciągu XML lub dokumencie.

Składnia

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>]

Opis

Polecenie Select-Xml cmdlet umożliwia wyszukiwanie tekstu w ciągach XML i dokumentach za pomocą zapytań XPath. Wprowadź zapytanie XPath i użyj parametru Content, Path lub Xml , aby określić plik XML do wyszukania.

Przykłady

Przykład 1. Wybierz pozycję AliasWłaściwości węzłów

W tym przykładzie są pobierane właściwości aliasu w elemecie Types.ps1xml. Aby uzyskać informacje o tym pliku, zobacz about_Types.ps1xml.

Pierwsze polecenie zapisuje ścieżkę do Types.ps1xml pliku w zmiennej $Path .

Drugie polecenie zapisuje ścieżkę XML do węzła AliasProperty w zmiennej $XPath .

Polecenie Select-Xml cmdlet pobiera węzły AliasProperty , które są identyfikowane przez instrukcję XPath z Types.ps1xml pliku. Polecenie używa operatora potoku (|) do wysyłania węzłów AliasProperty do Select-Object polecenia cmdlet. Parametr ExpandProperty rozszerza obiekt Node i zwraca jego właściwości Namei 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

Wynik przedstawia właściwość Name i ReferencedMemberName każdego aliasu Types.ps1xml w pliku. Na przykład istnieje właściwość Count , która jest aliasem właściwości Length .

Przykład 2. Wprowadzanie dokumentu XML

W tym przykładzie pokazano, jak za pomocą parametru XML podać dokument XML do Select-Xml polecenia cmdlet.

Polecenie Get-Content cmdlet pobiera zawartość Types.ps1xml pliku i zapisuje go w zmiennej $Types . Rzutowanie [xml] zmiennej jako obiektu XML.

Polecenie Select-Xml cmdlet pobiera węzły MethodName w Types.ps1xml pliku. Polecenie używa parametru Xml do określenia zawartości XML w $Types zmiennej i parametru XPath w celu określenia ścieżki do węzła MethodName .

[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"

Przykład 3: Search pliki Pomocy programu PowerShell

W tym przykładzie pokazano, jak za pomocą Select-Xml polecenia cmdlet przeszukiwać pliki pomocy polecenia cmdlet opartego na języku XML programu PowerShell. W tym przykładzie wyszukamy nazwę polecenia cmdlet, która służy jako tytuł dla każdego pliku pomocy i ścieżki do pliku pomocy.

Zmienna $Namespace zawiera tabelę skrótów reprezentującą przestrzeń nazw XML używaną dla plików pomocy.

Zmienna $Path zawiera ścieżkę do plików pomocy programu PowerShell. Jeśli na tym komputerze nie ma plików pomocy, użyj Update-Help polecenia cmdlet , aby pobrać pliki pomocy. Aby uzyskać więcej informacji na temat aktualizowalnej pomocy, zobacz about_Updatable_Help.

Polecenie Select-Xml cmdlet wyszukuje pliki XML nazw poleceń cmdlet, wyszukując Command:Name element w dowolnym miejscu w plikach. Wyniki są przechowywane w zmiennej $Xml . Select-Xml Zwraca obiekt SelectXmlInfo , który ma właściwość Node , która jest System.Xml. Obiekt XmlElement . Właściwość Node ma właściwość InnerXML zawierającą rzeczywisty kod XML, który jest pobierany.

Zmienna $Xml jest potokowana do Format-Table polecenia cmdlet. Polecenie Format-Table używa właściwości obliczeniowej, aby pobrać właściwość Node.InnerXML każdego obiektu w $Xml zmiennej, przyciąć biały odstęp przed tekstem i po nim, a następnie wyświetlić ją w tabeli wraz ze ścieżką do pliku źródłowego.

$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
...

Przykład 4. Różne sposoby wprowadzania kodu XML

W tym przykładzie przedstawiono dwa różne sposoby wysyłania Select-Xml kodu XML do polecenia cmdlet.

Pierwsze polecenie zapisuje ciąg here-string, który zawiera kod XML w zmiennej $Xml . Aby uzyskać więcej informacji na temat ciągów tutaj, zobacz about_Quoting_Rules.

Select-Xml używa parametru Content , aby określić kod XML w zmiennej $Xml .

Trzecie polecenie jest takie samo jak drugie, z wyjątkiem tego, że tt używa operatora potoku (|), aby wysłać kod XML w zmiennej $Xml do Select-Xml polecenia cmdlet.

$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

Przykład 5. Użyj domyślnej przestrzeni nazw xmlns

W tym przykładzie pokazano, jak używać Select-Xml polecenia cmdlet z dokumentami XML, które używają domyślnej przestrzeni nazw xmlns. W przykładzie są pobierane tytuły plików fragmentu kodu utworzonego przez użytkownika Windows PowerShell ISE. Aby uzyskać informacje o fragmentach kodu, zobacz New-IseSnippet.

Zmienna $SnippetNamespace zawiera tabelę skrótów dla domyślnej przestrzeni nazw używanej przez pliki XML fragmentu kodu. Wartość tabeli skrótu to identyfikator URI schematu XMLNS w fragmencie kodu XML. Nazwa klucza tabeli skrótu, fragment kodu, jest dowolna. Możesz użyć dowolnej nazwy, która nie jest zarezerwowana, ale nie można użyć nazw xmlns.

Polecenie Select-Xml cmdlet pobiera zawartość elementu Title każdego fragmentu kodu. Używa parametru Path do określenia katalogu fragmentów kodu i parametru Przestrzeni nazw w celu określenia przestrzeni nazw w zmiennej $SnippetNamespace . Wartość parametru XPath to snip:Title. Wyniki są przesyłane potokiem do ForEach-Object polecenia cmdlet, które pobiera tytuł z wartości właściwości InnerXml węzła.

$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}

Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
    ForEach-Object {$_.Node.Innerxml}

Parametry

-Content

Określa ciąg zawierający kod XML do wyszukania. Możesz również potokować ciągi do Select-Xml.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Określa ścieżki i nazwy plików XML do wyszukania. W przeciwieństwie do ścieżki wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Namespace

Określa tabelę skrótów przestrzeni nazw używanych w pliku XML. Użyj formatu@{<namespaceName> = <namespaceValue>}.

Gdy kod XML używa domyślnej przestrzeni nazw, która zaczyna się od xmlns, użyj dowolnego klucza dla nazwy przestrzeni nazw. Nie można używać xmlns. W instrukcji XPath prefiks każdej nazwy węzła o nazwie przestrzeni nazw i dwukropku, na przykład //namespaceName:Node.

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Określa ścieżkę i nazwy plików XML do wyszukania. Dozwolone są symbole wieloznaczne.

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Xml

Określa co najmniej jeden węzeł XML.

Dokument XML zostanie przetworzony jako kolekcja węzłów XML. W przypadku potoku dokumentu Select-XmlXML do każdego węzła dokumentu będzie przeszukiwany oddzielnie, ponieważ jest on dostarczany przez potok.

Type:XmlNode[]
Aliases:Node
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-XPath

Określa zapytanie wyszukiwania XPath. Język zapytań jest uwzględniany w wielkości liter. Ten parametr jest wymagany.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

System.String or System.Xml.XmlNode

Możesz przekazać ścieżkę lub węzeł XML do tego polecenia cmdlet.

Dane wyjściowe

SelectXmlInfo

Uwagi

XPath to standardowy język przeznaczony do identyfikowania części dokumentu XML. Aby uzyskać więcej informacji na temat języka XPath, zobacz XPath Reference (Dokumentacja XPath ) i sekcję Selection Filters (Filtry wyboru zdarzeń) w sekcji Wybór zdarzeń.