about_Simplified_Syntax

Rövid leírás

Az objektumgyűjtemények szkriptszűrőinek egyszerűbb, természetesebb nyelvi módjait ismerteti.

Hosszú leírás

A Windows PowerShell 3.0-ban bevezetett egyszerűsített szintaxis lehetővé teszi, hogy szkriptblokkok használata nélkül hozzon létre néhány szűrőparancsot. Az egyszerűsített szintaxis jobban hasonlít a természetes nyelvre, és elsősorban olyan objektumgyűjtemények esetén hasznos, amelyek parancsokba Where-Object vagy ForEach-Object azok megfelelő aliasaiba whereforeachés .

A gyűjtemények (leggyakrabban tömbök) tagjain használhat metódust anélkül, hogy a szkriptblokkon belül az automatikus változóra $_ hivatkozik.

Fontolja meg a következő két meghívást:

Standard szintaxis

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

Feljegyzés

A második parancsban a rendszer meghívja a GetKeyAlgorithm metódust a gyűjtemény minden objektumára. Ha a folyamatból kapott objektum nem rendelkezik metódussal GetKeyAlgorithm , a parancs hibát okoz.

Egyszerűsített szintaxis

Az egyszerűsített szintaxis alatt a gyűjtemény objektumainak tagjain dolgozó összehasonlító operátorok paraméterként lesznek implementálva. Emellett meghívhat egy metódust egy gyűjtemény objektumaira anélkül, hogy a szkriptblokkban lévő automatikus változóra $_ hivatkozik. Hasonlítsa össze a következő két meghívást a szabványos szintaxisbeli példákhoz:

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

Mivel a Tulajdonság és a MemberName paraméterek pozíciósak, kihagyhatja őket a parancsból. Az aliasok használatával tovább egyszerűsítheti a parancsokat:

dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm

Bár mindkét szintaxis működik, az egyszerűsített szintaxis az eredményeket a szkriptblokkon belüli automatikus változóra $_ való hivatkozás nélkül adja vissza. Az egyszerűsített szintaxis inkább egy természetes nyelvi utasításhoz hasonlít, és könnyebben érthető.

A metódus neve GetKeyAlgorithm argumentumként lesz átadva a következő TagName paraméteréhez ForEach-Object: . Amikor az egyszerűsített szintaxissal hívja meg a metódust, a metódus csak akkor lesz meghívva a folyamat egyes objektumaihoz, ha az objektum rendelkezik ezzel a módszerrel. Ezért ugyanazokat az eredményeket kapja, de hiba nélkül.

A következő példában Description a rendszer átadja a következő TagName paraméternek ForEach-Object. A parancs megjeleníti az egyes System.Diagnostics.Process objektumok leírását, amelyeket a rendszer visszaadott Get-Process.

Get-Process | foreach Description

Ebben a példában a metódus neve GetFiles a parancs MemberName paraméterének ForEach-Object lesz átadva. Az .* érték az Argumentumlista paraméternek lesz átadva. A GetFiles() metódust a rendszer meghívja az egyes System.IO.DirectoryInfo-objektumok keresési mintájának paraméterével .*Get-ChildItem.

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

Lásd még