Aracılığıyla paylaş


Select-Xml

XML dizesindeki veya belgedeki metni bulur.

Syntax

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

Description

cmdlet'i Select-Xml , XML dizelerinde ve belgelerinde metin aramak için XPath sorgularını kullanmanıza olanak tanır. Bir XPath sorgusu girin ve aranacak XML'yi belirtmek için Content, Path veya Xml parametresini kullanın.

Örnekler

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

Bu örnek içindeki Types.ps1xmldiğer ad özelliklerini alır. Bu dosya hakkında bilgi için bkz. about_Types.ps1xml.

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

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

Cmdlet, Select-Xml dosyasından XPath deyimi tarafından tanımlanan AliasProperty düğümlerini Types.ps1xml alır. komutu aliasproperty düğümlerini cmdlet'ine göndermek için Select-Object bir işlem hattı işleci (|) kullanır. ExpandProperty parametresi Node nesnesini genişletir ve 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ç, dosyadaki her diğer ad özelliğinin Types.ps1xml Name ve ReferencedMemberName değerlerini gösterir. Örneğin, Length özelliğinin diğer adı olan bir Count özelliği vardır.

Örnek 2: XML belgesi giriş

Bu örnekte, cmdlet'e XML belgesi sağlamak için XML parametresinin Select-Xml nasıl kullanılacağı gösterilmektedir.

cmdlet'i Get-Content dosyanın içeriğini Types.ps1xml alır ve değişkene $Types kaydeder. değişkeni [xml] bir XML nesnesi olarak yayınlar.

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

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

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

Bu örnekte, PowerShell XML tabanlı cmdlet yardım dosyalarında arama yapmak için cmdlet'in nasıl kullanılacağı Select-Xml gösterilmektedir. Bu örnekte, her yardım dosyası için başlık görevi görecek cmdlet adını ve yardım dosyasının yolunu arayacağız.

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

değişkeni, $Path 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 cmdlet'ini kullanın Update-Help . Güncelleştirilebilir Yardım hakkında daha fazla bilgi için bkz. about_Updatable_Help.

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

$Xml değişkeni cmdlet'ine Format-Table geçirilir. Komut, Format-Table değişkendeki $Xml her nesnenin Node.InnerXML özelliğini almak, metinden önceki ve sonraki boşluğu kırpmak ve kaynak dosyanın yolu ile birlikte tabloda görüntülemek için hesaplanan bir özellik kullanır.

$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 girişinin farklı yolları

Bu örnekte, cmdlet'e XML göndermenin Select-Xml iki farklı yolu gösterilmektedir.

İlk komut, değişkenine XML $Xml içeren bir here-string kaydeder. Here-strings hakkında daha fazla bilgi için bkz. about_Quoting_Rules.

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

Üçüncü komut ikinci komutla aynıdır, ancak tt değişkenindeki XML'yi cmdlet'e $XmlSelect-Xml göndermek için bir işlem hattı işleci (|) kullanır.

$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ı kullanma

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

değişkeni, $SnippetNamespace kod parçacığı XML dosyalarının kullandığı varsayılan ad alanı için bir karma tablo içerir. Karma tablo değeri, kod parçacığı XML'sindeki XMLNS şema URI'sine karşılık gelen değerdir. Karma tablo anahtarı adı olan ekran alıntısı rastgeledir. Ayrılmış olmayan herhangi bir ad kullanabilirsiniz, ancak xmln'leri kullanamazsınız.

cmdlet'i Select-Xml her kod parçacığının Title öğesinin içeriğini alır. Değişkendeki ad alanını belirtmek üzere Kod Parçacıkları dizinini ve Namespace parametresini belirtmek için Path parametresini $SnippetNamespace kullanır. XPath parametresinin değeri değeridirsnip:Title. Sonuçlar, düğümün ForEach-ObjectInnerXml özelliğinin değerinden başlığı alan cmdlet'ine iletilir.

$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'yi içeren bir dize belirtir. Dizeleri öğesine Select-Xmlde yöneltebilirsiniz.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

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

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Namespace

XML'de kullanılan ad alanlarının karma tablosunu belirtir. Biçimini@{<namespaceName> = <namespaceValue>} kullanın.

XML, xmln'lerle başlayan varsayılan ad alanını kullandığında, ad alanı adı için rastgele bir anahtar kullanın. Xmln'leri kullanamazsınız. XPath deyiminde, her düğüm adının önüne ad alanı adını ve gibi //namespaceName:Nodeiki nokta üst üste ekleyin.

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

-Path

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

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Xml

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

XML belgesi, XML düğümleri koleksiyonu olarak işlenir. BIR XML belgesini öğesine Select-Xmlyönelterseniz, işlem hattı aracılığıyla gelen her belge düğümünde ayrı arama yapılır.

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

-XPath

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Girişler

System.String or System.Xml.XmlNode

Bir yolu veya XML düğümünü bu cmdlet'e geçirebilirsiniz.

Çıkışlar

SelectXmlInfo

Notlar

XPath, XML belgesinin bölümlerini tanımlamak için tasarlanmış standart bir dildir. XPath dili hakkında daha fazla bilgi için bkz. XPath Başvurusu ve Olay Seçimi'nin Seçim Filtreleri bölümü.