Select-Xml
Trova testo in una stringa o in un documento XML.
Sintassi
Xml (Impostazione predefinita)
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>]
Descrizione
Il cmdlet Select-Xml consente di usare query XPath per cercare testo in stringhe e documenti XML.
Immettere una query XPath e usare il parametroContent
Esempio
Esempio 1: Selezionare nodi AliasProperty
In questo esempio vengono recuperate le proprietà alias nel Types.ps1xml. Per informazioni su questo file, vedere about_Types.ps1xml.
Il primo comando salva il percorso del file Types.ps1xml nella variabile $Path.
Il secondo comando salva il percorso XML nel nodo AliasProperty nella variabile $XPath.
Il cmdlet Select-Xml ottiene il AliasProperty nodi identificati dall'istruzione XPath dal file Types.ps1xml. Il comando usa un operatore pipeline (|) per inviare i nodi aliasProperty al cmdlet Select-Object. Il parametro ExpandProperty espande l'oggetto Node di e restituisce le relative proprietà Name e referencedMemberName.
$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
Il risultato mostra il Name e ReferencedMemberName di ogni proprietà alias nel file Types.ps1xml. Ad esempio, è presente una proprietà Count
Esempio 2: Immettere un documento XML
In questo esempio viene illustrato come utilizzare il parametro Xml per fornire un documento XML al cmdlet Select-Xml.
Il cmdlet Get-Content ottiene il contenuto del file Types.ps1xml e lo salva nella variabile $Types. Il [xml] esegue il cast della variabile come oggetto XML.
Il cmdlet Select-Xml ottiene i nodi MethodName nel file Types.ps1xml. Il comando usa il parametro Xml per specificare il contenuto XML nella variabile $Types e il parametro XPath per specificare il percorso del nodo MethodName.
[xml]$Types = Get-Content $PSHOME\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
Esempio 3: Cercare i file della Guida di PowerShell
Questo esempio illustra come usare il cmdlet Select-Xml per eseguire ricerche nei file della Guida dei cmdlet basati su XML di PowerShell. In questo esempio si cercherà il nome del cmdlet che funge da titolo per ogni file della Guida e il percorso del file della Guida.
La variabile $Namespace contiene una tabella hash che rappresenta lo spazio dei nomi XML utilizzato per i file della Guida.
La variabile $Path contiene il percorso dei file della Guida di PowerShell. Se nel computer non sono presenti file della Guida, usare il cmdlet Update-Help per scaricare i file della Guida. Per altre informazioni sulla Guida aggiornabile, vedere about_Updatable_Help.
Il cmdlet Select-Xml cerca i nomi dei cmdlet nei file XML individuando Command:Name elemento in qualsiasi punto dei file. I risultati vengono archiviati nella variabile $Xml.
Select-Xml restituisce un oggetto SelectXmlInfo con una proprietà Node, che è un oggetto System.Xml.XmlElement.
La proprietà Node dispone di una proprietà InnerXml contenente il codice XML effettivo recuperato.
La variabile $Xml viene inviata tramite pipe al cmdlet Format-Table. Il comando Format-Table usa una proprietà calcolata per ottenere la proprietà Node.InnerXml di ogni oggetto nella variabile $Xml, tagliare lo spazio vuoto prima e dopo il testo e visualizzarlo nella tabella, insieme al Percorso al file di origine.
$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
...
Esempio 4: modi diversi per l'input XML
In questo esempio vengono illustrati due modi diversi per inviare xml al cmdlet Select-Xml.
Il primo comando salva una stringa here contenente XML nella variabile $Xml. Per maggiori informazioni sulle here-string, consulta about_Quoting_Rules.
Select-Xml usa il parametro content per specificare il codice XML nella variabile $Xml.
Il terzo comando è uguale al secondo, ad eccezione del fatto che tt usa un operatore pipeline (|) per inviare il codice XML nella variabile $Xml al cmdlet Select-Xml.
$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
Esempio 5: Usare lo spazio dei nomi xmlns predefinito
In questo esempio viene illustrato come utilizzare il cmdlet Select-Xml con documenti XML che usano lo spazio dei nomi xmlns predefinito. L'esempio ottiene i titoli dei file di frammento creati dall'utente di Windows PowerShell ISE. Per informazioni sui frammenti di codice, vedere New-IseSnippet.
La variabile $SnippetNamespace contiene una tabella hash per lo spazio dei nomi predefinito usato dai file XML del frammento di codice. Il valore della tabella hash è l'URI dello schema XMLNS nel frammento XML. Il nome della chiave della tabella hash, snip, è arbitrario. È possibile usare qualsiasi nome non riservato, ma non è possibile utilizzare xmlns.
Il cmdlet Select-Xml ottiene il contenuto dell'elemento title di ogni frammento. Usa il parametro Path per specificare la directory Snippets e il parametro Namespace per specificare lo spazio dei nomi nella variabile $SnippetNamespace. Il valore del parametro XPath è il snip:Title. I risultati vengono inviati tramite pipe al cmdlet ForEach-Object, che ottiene il titolo dal valore della proprietà InnerXml del nodo.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
Parametri
-Content
Specifica una stringa contenente il codice XML da cercare. È anche possibile inviare tramite pipe stringhe a Select-Xml.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
Content
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-LiteralPath
Specifica i percorsi e i nomi di file dei file XML da cercare. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come metacaratteri. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | PSPath |
Set di parametri
LiteralPath
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-Namespace
Specifica una tabella hash degli spazi dei nomi utilizzati nel codice XML. Usare il formato@{<namespaceName> = <namespaceValue>}.
Quando il codice XML usa lo spazio dei nomi predefinito, che inizia con xmlns, usare una chiave arbitraria per il nome dello spazio dei nomi. Non è possibile usare xmlns. Nell'istruzione XPath anteporre a ogni nome di nodo il nome dello spazio dei nomi e i due punti, ad esempio //namespaceName:Node.
Proprietà dei parametri
| Tipo: | Hashtable |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Path
Specifica il percorso e i nomi di file dei file XML da cercare. Sono consentiti caratteri jolly.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
Path
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-Xml
Specifica uno o più nodi XML.
Un documento XML verrà elaborato come raccolta di nodi XML. Se si invia tramite pipe un documento XML a Select-Xml, ogni nodo del documento verrà cercato separatamente man mano che passa attraverso la pipeline.
Proprietà dei parametri
| Tipo: | XmlNode[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | nodo |
Set di parametri
Xml
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-XPath
Specifica una query di ricerca XPath. Il linguaggio di query fa distinzione tra maiuscole e minuscole. Questo parametro è obbligatorio.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
System.String or System.Xml.XmlNode
È possibile inviare tramite pipe un percorso o un nodo XML a questo cmdlet.
Output
SelectXmlInfo
Note
XPath è un linguaggio standard progettato per identificare parti di un documento XML. Per altre informazioni sul linguaggio XPath, vedere di riferimento XPath e la sezione Filtri di selezione di Selezione eventi.