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 przy użyciu 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. Wybieranie węzłów AliasWłaściwości

Ten przykład pobiera właściwości aliasu w obiekcie 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 (|), aby wysłać węzły AliasProperty do Select-Object polecenia cmdlet. Parametr ExpandProperty rozszerza obiekt Node i zwraca jego właściwości Name i 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

W wyniku zostanie wyświetlona 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 udostępnić dokument XML do Select-Xml polecenia cmdlet.

Polecenie Get-Content cmdlet pobiera zawartość Types.ps1xml pliku i zapisuje go w zmiennej $Types . Obiekt [xml] rzutuje zmienną jako obiekt XML.

Polecenie Select-Xml cmdlet pobiera węzły MethodName w Types.ps1xml pliku. Polecenie używa parametru Xml , aby określić zawartość XML w $Types zmiennej i parametr XPath , aby określić ścieżkę do węzła MethodName .

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

Przykład 3. Wyszukiwanie plików Pomocy programu PowerShell

W tym przykładzie Select-Xml pokazano, jak używać polecenia cmdlet do przeszukiwania plików pomocy poleceń cmdlet opartych 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 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 przeszukuje pliki XML dla nazw poleceń cmdlet, wyszukując Command:Name element w dowolnym miejscu w plikach. Wyniki są przechowywane w zmiennej $Xml . Select-XmlZwraca obiekt SelectXmlInfo, który ma właściwość Node, która jest obiektem System.Xml.XmlElement. Właściwość Node ma właściwość InnerXML , która zawiera rzeczywisty pobrany kod XML.

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 znak przed tekstem i po nim i wyświetlić go 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 danych XML

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

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

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

Trzecie polecenie jest takie samo jak drugie, z tą różnicą, że operator tt używa operatora potoku (|) do wysyłania kodu 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 Select-Xml pokazano, jak używać polecenia cmdlet z dokumentami XML, które używają domyślnej przestrzeni nazw xmlns. Przykład pobiera tytuły plików fragmentu kodu utworzonego przez użytkownika środowiska 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ótów to identyfikator URI schematu XMLNS w pliku XML fragmentu kodu. Nazwa klucza tabeli skrótu, fragment, jest dowolna. Możesz użyć dowolnej nazwy, która nie jest zarezerwowana, ale nie można użyć xmlns.

Polecenie Select-Xml cmdlet pobiera zawartość elementu Title każdego fragmentu kodu. Używa parametru Path , aby określić katalog fragmentów kodu i parametr przestrzeni nazw , aby określić przestrzeń 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ż przekazać ciągi potokowe 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 ująć ją w pojedynczy cudzysłów. Pojedyncze znaki 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, takim jak //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 do dokumentu Select-XmlXML każdy węzeł dokumentu będzie przeszukiwany oddzielnie, ponieważ przechodzi 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. W języku zapytań jest rozróżniana wielkość 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 and the Selection Filters (Odwołania XPath) i sekcję Selection Filters (Filtry wyboru zdarzeń).