Delen via


about_Simplified_Syntax

Korte beschrijving

Beschrijft eenvoudigere, natuurlijkere manieren om filters voor verzamelingen objecten te scripten.

Lange beschrijving

Met vereenvoudigde syntaxis, geïntroduceerd in Windows PowerShell 3.0, kunt u enkele filteropdrachten bouwen zonder scriptblokken te gebruiken. De vereenvoudigde syntaxis lijkt meer op natuurlijke taal en is voornamelijk nuttig met verzamelingen objecten die worden doorgesluisd in opdrachten Where-Object en ForEach-Object of hun bijbehorende aliassen where en foreach.

U kunt een methode gebruiken voor de leden van een verzameling (meestal een matrix) zonder te verwijzen naar de automatische variabele $_ in een scriptblok.

Houd rekening met de volgende twee aanroepen:

Standaardsyntaxis

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }

Notitie

In de tweede opdracht wordt de GetKeyAlgorithm methode aangeroepen voor elk object in de verzameling. Als het object dat is ontvangen van de pijplijn geen methode heeft GetKeyAlgorithm , produceert de opdracht een fout.

Vereenvoudigde syntaxis

Onder de vereenvoudigde syntaxis worden vergelijkingsoperatoren die werken op leden van objecten in een verzameling geïmplementeerd als parameters. U kunt ook een methode aanroepen voor objecten in een verzameling zonder te verwijzen naar de automatische variabele $_ in een scriptblok. Vergelijk de volgende twee aanroepen met de standaard syntaxisvoorbeelden:

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -MemberName GetKeyAlgorithm

Omdat de parameters Property en MemberName positional zijn, kunt u ze weglaten uit de opdracht. Met aliassen kunt u de opdrachten verder vereenvoudigen:

dir Cert:\LocalMachine\Root | where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm

Hoewel beide syntaxisen werken, retourneert de vereenvoudigde syntaxis resultaten zonder te verwijzen naar de automatische variabele $_ in een scriptblok. De vereenvoudigde syntaxis leest meer als een instructie in natuurlijke taal en kan gemakkelijker te begrijpen zijn.

De methodenaam GetKeyAlgorithm wordt doorgegeven als argument voor de parameter MemberName van ForEach-Object. Wanneer u de methode aanroept met behulp van de vereenvoudigde syntaxis, wordt de methode alleen aangeroepen voor elk object in de pijplijn als dat object die methode heeft. Daarom krijgt u dezelfde resultaten, maar zonder fouten.

In het volgende voorbeeld Description wordt de parameter MemberName van ForEach-Object. Met de opdracht wordt de beschrijving weergegeven van elk System.Diagnostics.Process-object dat wordt geretourneerd door Get-Process.

Get-Process | foreach Description

In dit voorbeeld wordt de methodenaam GetFiles doorgegeven aan de parameter MemberName van de ForEach-Object opdracht. De .* waarde wordt doorgegeven aan de parameter ArgumentList . De GetFiles() methode wordt aangeroepen met de parameter .* zoekpatroon voor elk System.IO.DirectoryInfo-object dat wordt geretourneerd door Get-ChildItem.

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

Zie ook