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-Xmlmengembalikan 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-Xmlmenggunakan 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.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Menentukan jalur dan nama file file XML yang akan dicari. Karakter kartubebas diizinkan.

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:XmlNode[]
Aliases:Node
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-XPath

Menentukan kueri pencarian XPath. Bahasa kueri peka huruf besar/kecil. Parameter ini diperlukan.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 dari Pemilihan Peristiwa.