about_Simplified_Syntax
Descrizione breve
Vengono descritti i modi più semplici e in linguaggio naturale dei filtri di scripting per le raccolte di oggetti.
Descrizione lunga
La sintassi semplificata, introdotta in Windows PowerShell 3.0, consente di compilare alcuni comandi di filtro senza usare blocchi di script. La sintassi semplificata è più simile al linguaggio naturale ed è utile principalmente con raccolte di oggetti che vengono inviati tramite pipe ai comandi Where-Object
e ForEach-Object
o ai where
corrispondenti alias e foreach
.
È possibile usare un metodo sui membri di una raccolta (più comunemente, una matrice) senza fare riferimento alla variabile $_
automatica all'interno di un blocco di script.
Si considerino le due chiamate seguenti:
Sintassi standard
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }
Nota
Nel secondo comando il GetKeyAlgorithm
metodo viene chiamato su ogni oggetto dell'insieme. Se l'oggetto ricevuto dalla pipeline non dispone di un GetKeyAlgorithm
metodo, il comando genera un errore.
Sintassi semplificata
Nella sintassi semplificata, gli operatori di confronto che operano sui membri di oggetti di una raccolta vengono implementati come parametri. Inoltre, è possibile richiamare un metodo sugli oggetti di una raccolta senza fare riferimento alla variabile $_
automatica all'interno di un blocco di script. Confrontare le due chiamate seguenti con gli esempi di sintassi standard:
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -MemberName GetKeyAlgorithm
Poiché i parametri Property e MemberName sono posizionali, è possibile ometterli dal comando . Usando gli alias, è possibile semplificare ulteriormente i comandi:
dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm
Mentre entrambe le sintassi funzionano, la sintassi semplificata restituisce risultati senza fare riferimento alla variabile $_
automatica all'interno di un blocco di script. La sintassi semplificata legge più come un'istruzione del linguaggio naturale e può essere più facile da comprendere.
Il nome GetKeyAlgorithm
del metodo viene passato come argomento per il parametro MemberName di ForEach-Object
. Quando si richiama il metodo usando la sintassi semplificata, il metodo viene chiamato per ogni oggetto nella pipeline solo se tale oggetto dispone di tale metodo. Di conseguenza, si ottengono gli stessi risultati, ma senza errori.
Nell'esempio successivo viene Description
passato al parametro MemberName di ForEach-Object
. Il comando visualizza la descrizione di ogni oggetto System.Diagnostics.Process restituito da Get-Process
.
Get-Process | foreach Description
In questo esempio il nome GetFiles
del metodo viene passato al parametro MemberName del ForEach-Object
comando. Il .*
valore viene passato al parametro ArgumentList . Il GetFiles()
metodo viene chiamato con il parametro .*
del criterio di ricerca per ogni oggetto System.IO.DirectoryInfo restituito da Get-ChildItem
.
Get-ChildItem /home -Directory | foreach GetFiles .*
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per