Select-Xml (Microsoft.PowerShell.Utility)


Select-Xml

Modül:
Microsoft.PowerShell.Utility

Bir XML dizesi veya belgesindeki metni bulur.

Sözdizimi

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>]

Tanım

Select-Xml cmdlet'i, XML dizeleri ve belgelerdeki metni aramak için XPath sorgularını kullanmanızı sağlar. Bir XPath sorgusu girin ve aranacak XML'i belirtmek için İçerik, Yol veya Xml parametresini kullanın.

Örnekler

Örnek 1: AliasProperty düğümlerini seçin

Bu örnek, Types.ps1xml dosyasındaki takma ad özelliklerini alır. Bu dosya hakkında bilgi için about_Types.ps1xml'e bakın.

İlk komut, Types.ps1xml dosyasının yolunu $Path değişkenine kaydeder.

İkinci komut, XML yolunu AliasProperty düğümüne $XPath değişkenine kaydeder.

Select-Xml cmdlet'i, Types.ps1xml dosyasından XPath deyimiyle tanımlanan AliasProperty düğümlerini alır. Komut, AliasProperty düğümlerini Select-Object cmdlet'ine göndermek için bir ardışık düzen operatörü (|) kullanır. ExpandProperty parametresi Node nesnesini genişletir ve onun Name ve ReferencedMemberName özelliklerini döndürür.

$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

Sonuç, Types.ps1xml dosyasındaki her takma ad özelliğinin Adını ve ReferanslıÜyeAdı'nı gösterir. Örneğin, Length özelliğinin takma adı olan bir Count özelliği vardır.

Örnek 2: Bir XML belgesi girin

Bu örnek, Select-Xml cmdlet'ine bir XML belgesi sağlamak için XML parametresinin nasıl kullanılacağını gösterir.

Get-Content cmdlet'i Types.ps1xml dosyasının içeriğini alır ve onu $Types değişkenine kaydeder. [xml], değişkeni bir XML nesnesi olarak dönüştürür.

Select-Xml cmdlet'i, Types.ps1xml dosyasındaki MethodName düğümlerini alır. Komut, $Types değişkenindeki XML içeriğini belirtmek için Xml parametresini ve değişkeninin yolunu belirtmek için XPath parametresini kullanır. MethodName düğümü.

[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"

Örnek 3: PowerShell Yardım dosyalarını arayın

Bu örnek, PowerShell XML tabanlı cmdlet yardım dosyalarını aramak için Select-Xml cmdlet'inin nasıl kullanılacağını gösterir. Bu örnekte, her yardım dosyası için başlık görevi gören cmdlet adını ve yardım dosyasının yolunu arayacağız.

$Namespace değişkeni, yardım dosyaları için kullanılan XML ad alanını temsil eden bir karma tablosu içerir.

$Path değişkeni PowerShell yardım dosyalarının yolunu içerir. Bilgisayarınızda bu yolda yardım dosyası yoksa, yardım dosyalarını indirmek için Update-Help cmdlet'ini kullanın. Güncellenebilir Yardım hakkında daha fazla bilgi için bkz. about_Updatable_Help.

Select-Xml cmdlet'i, dosyaların herhangi bir yerinde Command:Name öğesini bularak XML dosyalarında cmdlet adlarını arar. Sonuçlar $Xml değişkeninde saklanır. Select-Xml, bir System.Xml.XmlElement nesnesi olan Node özelliğine sahip bir SelectXmlInfo nesnesi döndürür . Node özelliği, alınan gerçek XML'i içeren bir InnerXML özelliğine sahiptir.

$Xml değişkeni Format-Table cmdlet'ine aktarılır. Format-Table komutu, $Xml değişkenindeki her nesnenin Node.InnerXML özelliğini elde etmek için hesaplanmış bir özellik kullanır, boşlukları kırpar metnin öncesini ve sonrasını seçin ve bunu kaynak dosyanın Yoluyla birlikte tabloda görüntüleyin.

$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
...

Örnek 4: XML girmenin farklı yolları

Bu örnek, Select-Xml cmdlet'ine XML göndermenin iki farklı yolunu gösterir.

İlk komut, $Xml değişkenine XML içeren bir dizeyi kaydeder. Buradaki dizeler hakkında daha fazla bilgi için bkz. about_Quoting_Rules.

Select-Xml, $Xml değişkenindeki XML'i belirtmek için Content parametresini kullanır.

Üçüncü komut, tt'nin $Xml değişkenindeki XML'i Select-'e göndermek için bir ardışık düzen operatörü (|) kullanması dışında ikinci komutla aynıdır. Xml cmdlet'i.

$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

Örnek 5: Varsayılan xmlns ad alanını kullanın

Bu örnek, Select-Xml cmdlet'inin varsayılan xmlns ad alanını kullanan XML belgeleriyle nasıl kullanılacağını gösterir. Örnek, Windows PowerShell ISE kullanıcısı tarafından oluşturulan kod parçası dosyalarının başlıklarını alır. Parçacıklar hakkında bilgi için bkz. New-IseSnippet.

$SnippetNamespace değişkeni, XML dosyalarının kullandığı varsayılan ad alanı için bir karma tablosu içerir. Karma tablo değeri, snippet XML'deki XMLNS şema URI'sidir. Karma tablosu anahtar adı snip isteğe bağlıdır. Ayrılmamış herhangi bir adı kullanabilirsiniz ancak xmlns'yi kullanamazsınız.

Select-Xml cmdlet'i her pasajın Title öğesinin içeriğini alır. Snippets dizinini belirtmek için Path parametresini ve $SnippetNamespace değişkenindeki ad alanını belirtmek için Ad Alanı parametresini kullanır. XPath parametresinin değeri snip:Title'dır. Sonuçlar, başlığı düğümün InnerXml özelliğinin değerinden alan ForEach-Object cmdlet'ine aktarılır.

$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}

Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
    ForEach-Object {$_.Node.Innerxml}

Parametreler

-Content

Aranacak XML'i içeren bir dize belirtir. Ayrıca dizeleri Select-Xml'e yönlendirebilirsiniz.

Tip :

String[]

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-LiteralPath

Aranacak XML dosyalarının yollarını ve dosya adlarını belirtir. Path'ten farklı olarak LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.

Tip :

String[]

Takma adlar:

PSPath, LP

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-Namespace

XML'de kullanılan ad alanlarının karma tablosunu belirtir. @{= biçimini kullanın.

XML, xmlns ile başlayan varsayılan ad alanını kullandığında, ad alanı adı için isteğe bağlı bir anahtar kullanın. Xmlns'i kullanamazsınız. XPath deyiminde, her düğüm adının önüne ad alanı adı ve iki nokta üst üste ekleyin (örneğin, //namespaceName:Node).

Tip :

Karma tablo

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Path

Aranacak XML dosyalarının yolunu ve dosya adlarını belirtir. Joker karakterlere izin verilir.

Tip :

String[]

Konum:

1

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

True

-Xml

Bir veya daha fazla XML düğümünü belirtir.

Bir XML belgesi, XML düğümlerinin bir koleksiyonu olarak işlenecektir. Bir XML belgesini Select-Xml'e yönlendirirseniz, ardışık düzenden gelen her belge düğümü ayrı ayrı aranacaktır.

Tip :

XmlNode[]

Takma adlar:

Node

Konum:

1

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-XPath

Bir XPath arama sorgusunu belirtir. Sorgu dili büyük/küçük harfe duyarlıdır. Bu parametre gereklidir.

Tip :

String

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

System.String veya System.Xml.XmlNode

Bu cmdlet'e bir yol veya XML düğümü aktarabilirsiniz.

Çıkışlar

SelectXmlInfo

Notlar

XPath, bir XML belgesinin bölümlerini tanımlamak için tasarlanmış standart bir dildir. XPath dili hakkında daha fazla bilgi için XPath Referansına ve Olay Seçiminin Seçim Filtreleri bölümüne bakın.

İlgili makaleler