Select-Xml
XML dizesindeki veya belgedeki metni bulur.
Sözdizimi
Xml EnterprisePublishing
Select-Xml
[-XPath] <string>
[-Xml] <XmlNode[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Path
Select-Xml
[-XPath] <string>
[-Path] <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
LiteralPath
Select-Xml
[-XPath] <string>
-LiteralPath <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Content
Select-Xml
[-XPath] <string>
-Content <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Description
Select-Xml cmdlet'i, 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 Content, Pathveya Xml parametresini kullanın.
Örnekler
Örnek 1: AliasProperty düğümlerini seçme
Bu örnek, Types.ps1xmliçindeki diğer ad özelliklerini alır. Bu dosya hakkında bilgi için bkz. about_Types.ps1xml.
İlk komut, Types.ps1xml dosyasının yolunu $Path değişkenine kaydeder.
İkinci komut XML yolunu değişkenindeki $XPath düğümüne kaydeder.
Select-Xml cmdlet'i, dosyasından XPath deyimi tarafından tanımlanan Types.ps1xml düğümlerini alır. Komut, | düğümlerini cmdlet'ine göndermek için bir işlem hattı işleci (Select-Object) 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ç, dosyasındaki her diğer ad özelliğinin Name ve Types.ps1xml 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 Select-Xml parametresinin nasıl kullanılacağı gösterilmektedir.
Get-Content cmdlet'i Types.ps1xml dosyasının içeriğini alır ve $Types değişkenine kaydeder.
[xml] değişkenini XML nesnesi olarak dönüştürür.
Select-Xml cmdlet'i dosyasındaki Types.ps1xml düğümlerini alır. komut, değişkenindeki XML içeriğini belirtmek için $Types 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 Select-Xml cmdlet'in nasıl kullanılacağı 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.
$Namespace değişkeni, yardım dosyaları için kullanılan XML ad alanını temsil eden bir karma tablo 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üncelleştirilebilir Yardım hakkında daha fazla bilgi için bkz. about_Updatable_Help.
Select-Xml cmdlet'i, dosyaların herhangi bir yerinde Command:Name öğe bularak XML dosyalarında cmdlet adlarını arar. Sonuçlar $Xml değişkeninde depolanır.
Select-Xml, System.Xml.XmlElement bir 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 Format-Table cmdlet'ine yöneltilir.
Format-Table komutu, değişkenindeki her nesnenin $Xml özelliğini almak, metinden önce ve sonra boşluk kırpmak ve kaynak dosyaya 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, Select-Xml cmdlet'ine XML göndermenin iki farklı yolu gösterilmektedir.
İlk komut, $Xml değişkenine 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 $Xml parametresini kullanır.
Üçüncü komut ikinci komutla aynıdır, ancak tt | değişkenindeki XML'yi $Xml cmdlet'ine göndermek için bir işlem hattı işleci (Select-Xml) 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, Select-Xml cmdlet'in 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 .
$SnippetNamespace değişkeni, 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ı rastgeledir. Ayrılmış olmayan herhangi bir ad kullanabilirsiniz, ancak xmln'leri kullanamazsınız.
Select-Xml cmdlet'i her kod parçacığının Title öğesinin içeriğini alır.
değişkenindeki ad alanını belirtmek üzere Kod Parçacıkları dizinini ve Ad Alanı parametresini belirtmek için $SnippetNamespace parametresini kullanır.
XPath parametresinin değeri snip:Titledeğeridir. Sonuçlar, düğümün ForEach-Object ö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 Select-Xml'a da yöneltebilirsiniz.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
Content
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-LiteralPath
Aranacak XML dosyalarının yollarını ve dosya adlarını belirtir. Pathaksine, 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, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | PSPath, LP |
Parametre kümeleri
LiteralPath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Namespace
XML'de kullanılan ad alanlarının karma tablosunu belirtir.
@{<namespaceName> = <namespaceValue>}biçimini 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 //namespaceName:Nodegibi iki nokta üst üste ekleyin.
Parametre özellikleri
| Tür: | Hashtable |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Path
Aranacak XML dosyalarının yolunu ve dosya adlarını belirtir. Joker karakterlere izin verilir.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | True |
| DontShow: | False |
Parametre kümeleri
Path
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Xml
Bir veya daha fazla XML düğümü belirtir.
XML belgesi, XML düğümleri koleksiyonu olarak işlenir. bir XML belgesini Select-Xmliçin kanal oluşturursanız, işlem hattı üzerinden gelen her belge düğümü ayrı olarak aranacaktır.
Parametre özellikleri
| Tür: | XmlNode[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | Node |
Parametre kümeleri
Xml
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-XPath
XPath arama sorgusunu belirtir. Sorgu dili büyük/küçük harfe duyarlıdır. Bu parametre gereklidir.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
System.String or System.Xml.XmlNode
Bir yolu veya XML düğümünü bu cmdlet'e yöneltebilirsiniz.
Çı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 XPath Başvurusu ve Olay SeçimiSeçim Filtreleri bölümüne bakın.