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 Zawartość, Ścieżka lub Xml , aby określić plik XML do przeszukania.

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 rozwija 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: Search 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 będzie pełnić rolę tytułu 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 wyszukuje nazwy poleceń cmdlet w plikach XML, 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 , 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, a następnie 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 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 w celu określenia kodu XML w zmiennej $Xml .

Trzecie polecenie jest takie samo jak drugie, z tą różnicą, że 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 fragmentów 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ótów to identyfikator URI schematu XMLNS w pliku XML fragmentu kodu. Nazwa klucza tabeli skrótu, fragment, jest dowolna. Można 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 do określenia katalogu Fragmenty kodu i parametru przestrzeń 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ż 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 znaki pojedynczego cudzysłowu. 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 rozpoczyna 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 z nazwą przestrzeni nazw i dwukropkiem, 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 dokumentu XML do Select-Xmlelementu 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

Do tego polecenia cmdlet można przekazać ścieżkę lub węzeł XML.

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ń).