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 ModuleNameSonuç, 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ü ( cmdlet'i.|) kullanması dışında ikinci komutla aynıdır. 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Ö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.
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.