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-Xml
XML 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
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ń.