Select-Xml
Menemukan teks dalam string xml atau dokumen.
Sintaks
Xml (Default)
Select-Xml
[-XPath] <string>
[-Xml] <XmlNode[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Path
Select-Xml
[-XPath] <string>
[-Path] <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
LiteralPath
Select-Xml
[-XPath] <string>
-LiteralPath <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Content
Select-Xml
[-XPath] <string>
-Content <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Deskripsi
Cmdlet Select-Xml memungkinkan Anda menggunakan kueri XPath untuk mencari teks dalam string dan dokumen XML.
Masukkan kueri XPath, dan gunakan parameter Content, Path, , 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 file Types.ps1xml dalam variabel $Path.
Perintah kedua menyimpan jalur XML ke simpul AliasProperty dalam variabel $XPath.
Cmdlet Select-Xml mendapatkan simpul AliasProperty yang diidentifikasi oleh pernyataan XPath dari file Types.ps1xml. Perintah menggunakan operator alur (|) untuk mengirim simpul AliasProperty ke cmdlet Select-Object. Parameter ExpandProperty memperluas objek Simpul dan mengembalikan Nama dan properti 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 file Types.ps1xml. Misalnya, ada properti
Contoh 2: Memasukkan dokumen XML
Contoh ini memperlihatkan cara menggunakan parameter XML untuk menyediakan dokumen XML ke cmdlet Select-Xml.
Cmdlet Get-Content mendapatkan konten file Types.ps1xml dan menyimpannya dalam variabel $Types.
[xml] melemparkan variabel sebagai objek XML.
Cmdlet Select-Xml mendapatkan node MethodName dalam file Types.ps1xml. Perintah ini menggunakan parameter Xml untuk menentukan konten XML dalam variabel $Types 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 cmdlet Select-Xml 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 cmdlet Update-Help untuk mengunduh file bantuan. Untuk informasi selengkapnya tentang Bantuan yang Dapat Diperbarui, lihat about_Updatable_Help.
cmdlet Select-Xml mencari file XML untuk nama cmdlet dengan menemukan elemen Command:Name di mana saja dalam file. Hasilnya disimpan dalam variabel $Xml.
Select-Xml mengembalikan objek SelectXmlInfo yang memiliki properti Simpul, yang merupakan objek System.Xml.XmlElement.
Properti Simpul memiliki properti InnerXml yang berisi XML aktual yang diambil.
Variabel $Xml disalurkan ke cmdlet Format-Table. Perintah Format-Table menggunakan properti terhitung untuk mendapatkan properti Node.InnerXml dari setiap objek dalam variabel $Xml, 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 cmdlet Select-Xml.
Perintah pertama menyimpan string di sini yang berisi XML dalam variabel $Xml. Untuk informasi lebih lanjut tentang here-string, lihat about_Quoting_Rules.
Select-Xml menggunakan parameter Konten untuk menentukan XML dalam variabel $Xml.
Perintah ketiga sama dengan yang kedua, kecuali bahwa tt menggunakan operator alur (|) untuk mengirim XML dalam variabel $Xml ke cmdlet Select-Xml.
$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 cmdlet Select-Xml 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, segan-segan. Anda dapat menggunakan nama apa pun yang tidak dicadangkan, tetapi Anda tidak dapat menggunakan xmln .
Cmdlet Select-Xml mendapatkan konten elemen Judul dari setiap cuplikan. Ini menggunakan parameter Jalur untuk menentukan direktori Cuplikan dan parameter Namespace untuk menentukan namespace dalam variabel $SnippetNamespace. Nilai parameter XPath adalah snip:Title. Hasilnya disalurkan ke cmdlet ForEach-Object, 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.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
Content
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Menentukan jalur dan nama file file XML yang akan dicari. Tidak seperti Jalur, nilai parameter LiteralPath digunakan persis sebagaimana diketik. Tidak ada karakter yang ditafsirkan sebagai wildcard. Jika jalur menyertakan karakter escape, bungkus jalur tersebut dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, LP |
Set parameter
LiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | Hashtable |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Path
Menentukan jalur dan nama file file XML yang akan dicari. Karakter pengganti diizinkan.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
Path
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-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 masuk melalui alur.
Properti parameter
| Jenis: | XmlNode[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Node |
Set parameter
Xml
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-XPath
Menentukan kueri pencarian XPath. Bahasa kueri peka huruf besar/kecil. Parameter ini diperlukan.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
System.String or System.Xml.XmlNode
Anda dapat menyalurkan jalur atau simpul XML ke cmdlet ini.
Output
SelectXmlInfo
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 Pemilihan Peristiwa.