Select-Xml
XML dizesindeki veya belgedeki metni bulur.
Syntax
Xml (Varsayılan)
Select-Xml
[-Xml] <XmlNode[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Path
Select-Xml
[-Path] <String[]>
[-XPath] <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
PS C:\> $Path = "$Pshome\Types.ps1xml"
PS C:\> $XPath = "/Types/Type/Members/AliasProperty"
PS C:\> 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
Bu örnek Types.ps1xml dosyasındaki 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 $XPath değişkenindeki AliasProperty düğümüne kaydeder.
Üçüncü komut, Types.ps1xml dosyasından XPath deyimi tarafından tanımlanan AliasProperty düğümlerini almak için Select-Xml cmdlet'ini kullanır. komutu aliasproperty düğümlerini Select-Object cmdlet'ine göndermek için bir işlem hattı işleci kullanır. ExpandProperty parametresi Node nesnesini genişletir ve Name ve ReferencedMemberName özelliklerini döndürür.
Sonuç, Types.ps1xml dosyasındaki her diğer ad özelliğinin 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ş
PS C:\> [xml]$Types = Get-Content $Pshome\Types.ps1xml
PS C:\> Select-Xml -Xml $Types -XPath "//MethodName"
Bu örnekte, Select-Xml cmdlet'ine XML belgesi sağlamak için XML parametresinin nasıl kullanılacağı gösterilmektedir.
İlk komut, Types.ps1xml dosyasının içeriğini almak ve $Types değişkenine kaydetmek için Get-Content cmdlet'ini kullanır. [xml] değişkeni xml nesnesi olarak dönüştürür.
İkinci komut, Types.ps1xml dosyasındaki MethodName düğümlerini almak için Select-Xml cmdlet'ini kullanır. komut, $Types değişkenindeki XML içeriğini belirtmek için Xml parametresini ve MethodName düğüm yolunu belirtmek için XPath parametresini kullanır.
Örnek 3: PowerShell Yardım dosyalarında arama
PS C:\> $Namespace = @{command = "https://schemas.microsoft.com/maml/dev/command/2004/10"; maml = "https://schemas.microsoft.com/maml/2004/10"; dev = "https://schemas.microsoft.com/maml/dev/2004/10"}
The second command saves the path to the help files in the $Path variable.If there are no help files in this path on your computer, use the Update-Help cmdlet to download the help files. For more information about Updatable Help, see about_Updatable_Help (https://go.microsoft.com/fwlink/?LinkId=235801).
PS C:\> $Path = "$Pshome\en-us\*dll-Help.xml"
The third command uses the **Select-Xml** cmdlet to search the XML for cmdlet names by finding Command:Name element anywhere in the files. It saves the results in the $Xml variable.**Select-Xml** returns a **SelectXmlInfo** object that has a Node property, which is a **System.Xml.XmlElement** object. The Node property has an InnerXML property, which contains the actual XML that is retrieved.
PS C:\> $Xml = Select-Xml -Path $Path -Namespace $Namespace -XPath "//command:name"
The fourth command sends the XML in the $Xml variable to the Format-Table cmdlet. The **Format-Table** command uses a calculated property to get the Node.InnerXML property of each object in the $Xml variable, trim the white space before and after the text, and display it in the table, along with the path to the source file.
PS C:\> $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
...
Bu örnekte, PowerShell XML tabanlı cmdlet yardım dosyalarında arama yapmak için Select-Xml cmdlet'inin 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.
İlk komut, yardım dosyaları için kullanılan XML ad alanını temsil eden bir karma tablo oluşturur ve bunu $Namespace değişkenine kaydeder.
Örnek 4: XML girişinin farklı yolları
PS C:\> $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>
"@
The second command uses the *Content* parameter of **Select-Xml** to specify the XML in the $Xml variable.
PS C:\> Select-Xml -Content $Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
The third command is equivalent to the second. It uses a pipeline operator (|) to send the XML in the $Xml variable to the **Select-Xml** cmdlet.
PS C:\> $Xml | Select-Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
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. (Buradaki dizeler hakkında daha fazla bilgi için bkz. about_Quoting_Rules.)
Örnek 5: Varsayılan xmlns ad alanını kullanma
PS C:\> $SnippetNamespace = @{snip = "https://schemas.microsoft.com/PowerShell/Snippets"}
The second command uses the **Select-Xml** cmdlet to get the content of the Title element of each snippet. It uses the *Path* parameter to specify the Snippets directory and the *Namespace* parameter to specify the namespace in the $SnippetNamespace variable. The value of the *XPath* parameter is the "snip" namespace key, a colon (:), and the name of the Title element.The command uses a pipeline operator (|) to send each **Node** property that **Select-Xml** returns to the ForEach-Object cmdlet, which gets the title in the value of the **InnerXml** property of the node.
PS C:\> Select-Xml -Path $Home\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" | foreach {$_.Node.Innerxml}
Bu örnekte, varsayılan xmlns ad alanını kullanan XML belgeleriyle Select-Xml cmdlet'inin 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.
İlk komut, kod parçacığı XML dosyalarının kullandığı varsayılan ad alanı için bir karma tablo oluşturur ve bunu $SnippetNamespace değişkenine atar. 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.
Parametreler
-Content
Aranacak XML'i içeren bir dize belirtir.
Ayrıca, dizeleri Select-Xml
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:Node gibi 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-Xml
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.