Bagikan melalui


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

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 Count yang merupakan alias dari properti Panjang.

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, pangkas spasi putih sebelum dan sesudah teks, dan tampilkan 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 selengkapnya tentang string di sini, 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.

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 Jalur, nilai parameter LiteralPath digunakan persis seperti yang diketik. 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 masuk 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

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.