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