Select-Xml
Szöveg keresése XML-sztringben vagy dokumentumban.
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
A Select-Xml
parancsmag segítségével XPath-lekérdezésekkel kereshet szöveget XML-sztringekben és dokumentumokban.
Adjon meg egy XPath-lekérdezést, és a Tartalom, elérési út vagy Xml paraméterrel adja meg a keresendő XML-t.
Példák
1. példa: AliasProperty csomópontok kiválasztása
Ez a példa beolvasja az alias tulajdonságait a Types.ps1xml
. A fájlról további információt a about_Types.ps1xml fájlban talál.
Az első parancs menti a változóban lévő $Path
fájl elérési útjátTypes.ps1xml
.
A második parancs menti az XML-elérési utat a változó AliasProperty csomópontjára $XPath
.
A Select-Xml
parancsmag lekéri a fájlból Types.ps1xml
az XPath utasítás által azonosított AliasProperty csomópontokat. A parancs egy folyamatkezelővel (|
) küldi el az AliasProperty csomópontokat a Select-Object
parancsmagnak. Az ExpandProperty paraméter kibontja a Csomópont objektumot, és visszaadja a Név és a ReferenciaMemberName tulajdonságát.
$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
Az eredmény a fájl egyes aliastulajdonságainak Types.ps1xml
Neve és ReferencedMemberName neve. Létezik például egy Darabszám tulajdonság, amely a Length tulajdonság aliasa.
2. példa: XML-dokumentum bevitele
Ez a példa bemutatja, hogyan adhat meg XML-dokumentumot a parancsmagnak az Select-Xml
XML-paraméter használatával.
A Get-Content
parancsmag lekéri a Types.ps1xml
fájl tartalmát, és menti a $Types
változóba. A [xml]
változót XML-objektumként öntötte el.
A Select-Xml
parancsmag lekéri a MethodName csomópontokat a Types.ps1xml
fájlban. A parancs az XML paraméter használatával adja meg a változó XML-tartalmát$Types
, az XPath paraméter pedig a MethodName csomópont elérési útját.
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
3. példa: PowerShell-súgófájlok keresése
Ez a példa bemutatja, hogyan használható a Select-Xml
parancsmag a PowerShell XML-alapú parancsmag súgófájljainak keresésére. Ebben a példában az egyes súgófájlok címként szolgáló parancsmag nevét és a súgófájl elérési útját keressük.
A $Namespace
változó egy kivonattáblát tartalmaz, amely a súgófájlokhoz használt XML-névteret jelöli.
A $Path
változó tartalmazza a PowerShell súgófájljainak elérési útját. Ha a számítógépen nem találhatók súgófájlok ebben az elérési úton, a Update-Help
parancsmaggal töltse le a súgófájlokat. Az frissíthető súgóval kapcsolatos további információkért lásd: about_Updatable_Help.
A Select-Xml
parancsmag megkeresi az XML-fájlokat a parancsmagok nevei között, és a fájlokban bárhol megtalálja Command:Name
az elemet. Az eredmények a $Xml
változóban vannak tárolva. Select-Xml
Egy SelectXmlInfo objektumot ad vissza, amely egy Node tulajdonsággal rendelkezik, amely egy System.Xml.XmlElement objektum.
A Node tulajdonság egy InnerXML tulajdonságot tartalmaz, amely a ténylegesen beolvasott XML-t tartalmazza.
A $Xml
változó a parancsmaghoz Format-Table
van csövezve. A Format-Table
parancs egy számított tulajdonsággal lekéri a változó egyes $Xml
objektumainak Node.InnerXML tulajdonságát, levágja a szóközt a szöveg előtt és után, és megjeleníti a táblában, valamint a forrásfájl elérési útját.
$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
...
4. példa: Az XML bevitelének különböző módjai
Ez a példa két különböző módszert mutat be az XML parancsmagba való küldésére Select-Xml
.
Az első parancs egy XML-t tartalmazó here-sztringet ment a $Xml
változóba. Az itt szereplő sztringekről további információt a about_Quoting_Rules talál.
Select-Xml
A Content paraméter használatával adja meg az XML-t a $Xml
változóban.
A harmadik parancs megegyezik a második paranccsal, azzal a kivételrel, hogy a tt egy folyamatkezelőt (|
) használ a változó XML-fájljának $Xml
a Select-Xml
parancsmagnak való elküldéséhez.
$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
5. példa: Az alapértelmezett xmlns-névtér használata
Ez a példa bemutatja, hogyan használhatja a Select-Xml
parancsmagot az alapértelmezett xmlns-névteret használó XML-dokumentumokkal. A példa lekéri a Windows PowerShell ISE felhasználó által létrehozott kódrészletfájljainak címét. A kódrészletekről további információt a New-IseSnippet című témakörben talál.
A $SnippetNamespace
változó kivonattáblát tartalmaz az XML-fájlok által használt alapértelmezett névtérhez. A kivonattábla értéke az XML kódrészlet XML-kódrészletének XMLNS-séma URI-ja. A kivonattábla kulcsának neve ( snip) tetszőleges. Bármilyen olyan nevet használhat, amely nincs lefoglalva, de xmlneket nem használhat.
A Select-Xml
parancsmag az egyes kódrészletek Cím elemének tartalmát kapja meg. Az Elérési út paraméterrel adja meg a kódrészletek könyvtárát és a Namespace paramétert a változó névterének $SnippetNamespace
megadásához. Az XPath paraméter értéke a snip:Title
. Az eredmények a ForEach-Object
parancsmagra vannak állítva, amely a csomópont InnerXml tulajdonságának értékéből kapja meg a címet.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Paraméterek
-Content
A keresendő XML-t tartalmazó sztringet adja meg. Sztringeket is befűzhet a parancsba Select-Xml
.
Típus: | String[] |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-LiteralPath
Megadja a keresendő XML-fájlok elérési útját és fájlneveit. A Path-tal ellentétben a LiteralPath paraméter értéke pontosan a beírt módon lesz használva. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési út tartalmaz escape karaktereket, csatolja egy idézőjelek közé. Az idézőjelek azt mondják a PowerShellnek, hogy ne értelmezzen karaktereket feloldósorozatként.
Típus: | String[] |
Aliasok: | PSPath, LP |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-Namespace
Az XML-ben használt névterek kivonattábláját adja meg. Használja a formátumot@{<namespaceName> = <namespaceValue>}
.
Amikor az XML az alapértelmezett névteret használja, amely xmlnekkel kezdődik, használjon tetszőleges kulcsot a névtérnévhez. Xmlneket nem használhat. Az XPath utasításban minden csomópontnév előtagja a névtér nevével és egy kettősponttal, például //namespaceName:Node
.
Típus: | Hashtable |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Path
Megadja a keresendő XML-fájlok elérési útját és fájlneveit. A helyettesítő karakterek használata engedélyezett.
Típus: | String[] |
Position: | 1 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | True |
-Xml
Egy vagy több XML-csomópontot határoz meg.
Az XML-dokumentumok XML-csomópontok gyűjteményeként lesznek feldolgozva. Ha egy XML-dokumentumot Select-Xml
a rendszer a folyamat során külön keres, az egyes dokumentumcsomópontok külön-külön lesznek keresve.
Típus: | XmlNode[] |
Aliasok: | Node |
Position: | 1 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-XPath
XPath keresési lekérdezést ad meg. A lekérdezés nyelve megkülönbözteti a kis- és nagybetűk nyelvét. Ez a paraméter kötelező.
Típus: | String |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
System.String or System.Xml.XmlNode
Ehhez a parancsmaghoz elérési utat vagy XML-csomópontot is csövezhet.
Kimenetek
Jegyzetek
Az XPath egy szabványos nyelv, amely egy XML-dokumentum részeinek azonosítására szolgál. Az XPath nyelvről további információt az XPath-referencia és az Eseménykijelölés kiválasztási szűrők szakaszában talál.