Select-Xml
XML dizesindeki veya belgedeki 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>]
Description
Cmdlet, Select-Xml
XML dizelerinde ve belgelerinde metin aramak için XPath sorgularını kullanmanıza olanak tanır.
XPath sorgusu girin ve aranacak XML'yi belirtmek için İçerik, Yol veya Xml parametresini kullanın.
Örnekler
Örnek 1: AliasProperty düğümlerini seçme
Bu örnek içindeki Types.ps1xml
diğer ad özelliklerini alır. Bu dosya hakkında bilgi için bkz . about_Types.ps1xml.
İlk komut, dosyanın yolunu Types.ps1xml
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. Komut, 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'ine XML belgesi sağlamak için XML parametresinin nasıl kullanılacağı gösterilmektedir Select-Xml
.
Get-Content
cmdlet dosyanın içeriğini Types.ps1xml
alır ve değişkene $Types
kaydeder. değişkeni [xml]
bir XML nesnesi olarak dönüştürür.
cmdlet'i Select-Xml
dosyadaki MethodName düğümlerini Types.ps1xml
alır. komutu, değişkendeki $Types
XML içeriğini belirtmek için Xml parametresini ve MethodName düğüm yolunu belirtmek için XPath parametresini kullanır.
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Örnek 3: PowerShell Yardım dosyalarında 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-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'yi içeren bir InnerXML özelliğine sahiptir.
$Xml
değişkeni cmdlet'ine Format-Table
yöneltilir. komutu, Format-Table
değişkendeki $Xml
her nesnenin Node.InnerXML özelliğini almak, metinden önce ve sonra boşluk 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şkeninde $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 $Xml
Select-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'sidir. 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. Kod Parçacıkları dizinini belirtmek için Path parametresini ve değişkendeki ad alanını belirtmek için Namespace parametresini $SnippetNamespace
kullanır. XPath parametresinin değeri değeridirsnip:Title
. Sonuçlar, düğümün ForEach-Object
InnerXml ö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'i içeren bir dize belirtir. Dizeleri adresine Select-Xml
de yöneltebilirsiniz.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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.
Tür: | String[] |
Diğer adlar: | PSPath, LP |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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ı ve gibi //namespaceName:Node
iki nokta üst üste ekleyin.
Tür: | Hashtable |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Path
Aranacak XML dosyalarının yolunu ve dosya adlarını belirtir. Joker karakterlere izin verilir.
Tür: | String[] |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-Xml
Bir veya daha fazla XML düğümü belirtir.
XML belgesi, XML düğümleri koleksiyonu olarak işlenir. Bir XML belgesini adresine Select-Xml
yönelterseniz, işlem hattı üzerinden gelen her belge düğümü ayrı olarak aranacaktır.
Tür: | XmlNode[] |
Diğer adlar: | Node |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-XPath
XPath arama sorgusunu belirtir. Sorgu dili büyük/küçük harfe duyarlıdır. Bu parametre zorunludur.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
System.String or System.Xml.XmlNode
Bir yolu veya XML düğümünü bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
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ü.
İlişkili Bağlantılar
PowerShell