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 på medlemmarna i en samling (oftast en matris) utan att referera till den automatiska variabeln $_ i ett skriptblock.

Tänk på 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 objektmedlemmar 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 parametern 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 parameter för medlemsnamn för ForEach-Object kommandot.
Metoden anropas med sökmönsterparametern .*.
Resultatet är FileInfo poster för alla dolda filer i Unix-format i användarens hemkataloger.

Get-ChildItem /home -Directory | foreach GetFiles .*

Se även