Select-Xml
Menemukan teks dalam string xml atau dokumen.
Sintaks
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>]
Deskripsi
Select-Xml
Cmdlet memungkinkan Anda menggunakan kueri XPath untuk mencari teks dalam string dan dokumen XML.
Masukkan kueri XPath, dan gunakan parameter Konten, Jalur, atau Xml untuk menentukan XML yang akan dicari.
Contoh
Contoh 1: Pilih simpul AliasProperty
Contoh ini mendapatkan properti alias di Types.ps1xml
. Untuk informasi tentang file ini, lihat about_Types.ps1xml.
Perintah pertama menyimpan jalur ke Types.ps1xml
file dalam $Path
variabel.
Perintah kedua menyimpan jalur XML ke simpul AliasProperty dalam $XPath
variabel.
Select-Xml
Cmdlet mendapatkan simpul AliasProperty yang diidentifikasi oleh pernyataan XPath dari Types.ps1xml
file. Perintah menggunakan operator alur (|
) untuk mengirim simpul AliasProperty ke Select-Object
cmdlet. Parameter ExpandProperty memperluas objek Node dan mengembalikan properti Nama dan 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
Hasilnya memperlihatkan Nama dan ReferencedMemberName dari setiap properti alias dalam Types.ps1xml
file. Misalnya, ada properti Hitung yang merupakan alias dari properti Panjang .
Contoh 2: Memasukkan dokumen XML
Contoh ini memperlihatkan cara menggunakan parameter XML untuk menyediakan dokumen XML ke Select-Xml
cmdlet.
Get-Content
Cmdlet mendapatkan konten Types.ps1xml
file dan menyimpannya dalam $Types
variabel. Melemparkan [xml]
variabel sebagai objek XML.
Select-Xml
Cmdlet mendapatkan node MethodName dalam Types.ps1xml
file. Perintah menggunakan parameter Xml untuk menentukan konten XML dalam $Types
variabel dan parameter XPath untuk menentukan jalur ke simpul MethodName .
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Contoh 3: Mencari file Bantuan PowerShell
Contoh ini memperlihatkan cara menggunakan Select-Xml
cmdlet untuk mencari file bantuan cmdlet berbasis XML PowerShell. Dalam contoh ini, kita akan mencari nama cmdlet yang berfungsi sebagai judul untuk setiap file bantuan dan jalur ke file bantuan.
Variabel $Namespace
berisi tabel hash yang mewakili namespace XML yang digunakan untuk file bantuan.
Variabel $Path
berisi jalur ke file bantuan PowerShell. Jika tidak ada file bantuan di jalur ini pada komputer Anda, gunakan Update-Help
cmdlet untuk mengunduh file bantuan. Untuk informasi selengkapnya tentang Bantuan yang Dapat Diperbarui, lihat about_Updatable_Help.
Select-Xml
Cmdlet mencari file XML untuk nama cmdlet dengan menemukan Command:Name
elemen di mana saja dalam file. Hasilnya disimpan dalam $Xml
variabel . Select-Xml
mengembalikan objek SelectXmlInfo yang memiliki properti Node, yang merupakan objek System.Xml.XmlElement.
Properti Simpul memiliki properti InnerXML yang berisi XML aktual yang diambil.
Variabel $Xml
disalurkan ke Format-Table
cmdlet. Format-Table
Perintah menggunakan properti terhitung untuk mendapatkan properti Node.InnerXML dari setiap objek dalam $Xml
variabel, memangkas spasi putih sebelum dan sesudah teks, dan menampilkannya dalam tabel, bersama dengan Jalur ke file sumber.
$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
...
Contoh 4: Berbagai cara untuk memasukkan XML
Contoh ini menunjukkan dua cara berbeda untuk mengirim XML ke Select-Xml
cmdlet.
Perintah pertama menyimpan string di sini yang berisi XML dalam $Xml
variabel . Untuk informasi selengkapnya tentang here-string, lihat about_Quoting_Rules.
Select-Xml
menggunakan parameter Konten untuk menentukan XML dalam $Xml
variabel.
Perintah ketiga sama dengan yang kedua, kecuali bahwa tt menggunakan operator alur (|
) untuk mengirim XML dalam $Xml
variabel ke Select-Xml
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
Contoh 5: Gunakan namespace xmlns default
Contoh ini memperlihatkan cara menggunakan Select-Xml
cmdlet dengan dokumen XML yang menggunakan namespace xmlns default. Contohnya mendapatkan judul file cuplikan yang dibuat pengguna Windows PowerShell ISE. Untuk informasi tentang cuplikan, lihat New-IseSnippet.
Variabel $SnippetNamespace
berisi tabel hash untuk namespace default yang digunakan file XML cuplikan. Nilai tabel hash adalah URI skema XMLNS di XML cuplikan. Nama kunci tabel hash, cuplikan, bersifat arbitrer. Anda dapat menggunakan nama apa pun yang tidak dicadangkan, tetapi Anda tidak dapat menggunakan xmln.
Select-Xml
Cmdlet mendapatkan konten elemen Judul dari setiap cuplikan. Ini menggunakan parameter Jalur untuk menentukan direktori Cuplikan dan parameter Namespace untuk menentukan namespace dalam $SnippetNamespace
variabel. Nilai parameter XPath adalah snip:Title
. Hasilnya disalurkan ke ForEach-Object
cmdlet, yang mendapatkan judul dari nilai properti InnerXml dari simpul.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Parameter
-Content
Menentukan string yang berisi XML untuk dicari. Anda juga dapat menyalurkan string ke Select-Xml
.
Jenis: | String[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-LiteralPath
Menentukan jalur dan nama file file XML yang akan dicari. Tidak seperti Path, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Jenis: | String[] |
Alias: | PSPath, LP |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Namespace
Menentukan tabel hash namespace layanan yang digunakan dalam XML. Gunakan format@{<namespaceName> = <namespaceValue>}
.
Saat XML menggunakan namespace default, yang dimulai dengan xmln, gunakan kunci arbitrer untuk nama namespace layanan. Anda tidak dapat menggunakan xmln. Dalam pernyataan XPath, awali setiap nama node dengan nama namespace dan titik dua, seperti //namespaceName:Node
.
Jenis: | Hashtable |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Path
Menentukan jalur dan nama file file XML yang akan dicari. Karakter kartubebas diizinkan.
Jenis: | String[] |
Position: | 1 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
-Xml
Menentukan satu atau beberapa simpul XML.
Dokumen XML akan diproses sebagai kumpulan simpul XML. Jika Anda menyalurkan dokumen XML ke Select-Xml
, setiap simpul dokumen akan dicari secara terpisah saat datang melalui alur.
Jenis: | XmlNode[] |
Alias: | Node |
Position: | 1 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-XPath
Menentukan kueri pencarian XPath. Bahasa kueri peka huruf besar/kecil. Parameter ini diperlukan.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
System.String or System.Xml.XmlNode
Anda dapat menyalurkan jalur atau simpul XML ke cmdlet ini.
Output
Catatan
XPath adalah bahasa standar yang dirancang untuk mengidentifikasi bagian dari dokumen XML. Untuk informasi selengkapnya tentang bahasa XPath, lihat Referensi XPath dan bagian Filter Pilihan dari Pemilihan Peristiwa.