about_Simplified_Syntax
KORT BESKRIVNING
Beskriver enklare och mer naturliga sätt att använda skriptfilter för samlingar av objekt.
LÅNG BESKRIVNING
Med förenklad syntax, som introducerades i Windows PowerShell 3.0, kan du skapa vissa filterkommandon utan att använda skriptblock. Den förenklade syntaxen liknar naturligt språk och är främst användbar med samlingar av objekt som skickas till kommandon Where-Object
och ForEach-Object
deras motsvarande alias where
och foreach
.
Du kan använda en metod för medlemmarna i en samling (oftast en matris) utan att referera till den automatiska variabeln $_
i ett skriptblock.
Överväg följande två anrop:
Standardsyntax
dir Cert:\LocalMachine\Root | where { $_.FriendlyName -eq 'Verisign' }
dir Cert:\ -Recurse | foreach { $_.GetKeyAlgorithm() }
Förenklad syntax
Under den förenklade syntaxen behandlas jämförelseoperatorer som arbetar med medlemmar i objekt i en samling som parametrar. Du kan anropa en metod för objekt i en samling utan att referera till den automatiska variabeln $_
i ett skriptblock.
Jämför följande två anrop med dem i föregående exempel:
dir Cert:\LocalMachine\Root | where FriendlyName -eq 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm
Båda syntaxerna fungerar, men den förenklade syntaxen returnerar resultat utan att referera till den automatiska variabeln $_
i ett skriptblock.
Metodnamnet GetKeyAlgorithm
behandlas som en parameter för ForEach-Object
.
Det andra kommandot returnerar samma resultat, men utan fel, eftersom den förenklade syntaxen inte försöker returnera resultat för objekt som det angivna argumentet inte tillämpades för.
I det här exemplet skickas Process
egenskapen Description
som parameter för medlemsnamn till ForEach-Object
kommandot . Resultatet är beskrivningar av aktiva processer.
Get-Process | foreach Description
I det här exemplet skickas DirectoryInfo
metoden GetFiles
som parametern medlemsnamn för ForEach-Object
kommandot.
Metoden anropas med sökmönsterparametern .*
.
Resultatet är FileInfo
poster för alla dolda unix-filer i användarhemkataloger.
Get-ChildItem /home -Directory | foreach GetFiles .*