Megosztás a következőn keresztül:


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-XmlEgy 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-XmlA 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-Xmla 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

SelectXmlInfo

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.