Megosztás a következőn keresztül:


about_Egyszerűsített_Szintaxis

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 a Where-Object és ForEach-Object parancsokba vagy a hozzájuk tartozó where és foreachaliasokba kerülnek.

A gyűjtemények tagjain (leggyakrabban tömbökön) 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 hívást:

Standard szintaxis

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

Jegyzet

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 GetKeyAlgorithm metódussal, 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 szkriptblokkon belül az 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 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ódusnév GetKeyAlgorithm a ForEach-Object paraméterének argumentumaként lesz átadva. 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 a Description a ForEach-Object paraméterének továbbítja. A parancs megjeleníti az System.Diagnostics.ProcessGet-Processáltal visszaadott objektumok leírását.

Get-Process | foreach Description

Ebben a példában a metódus neve GetFiles a parancs ForEach-Object paraméterének lesz átadva. A .* érték a Argumentumlista paraméternek lesz átadva. A GetFiles() metódust hívja meg a .*minden, a System.IO.DirectoryInfo objektum által visszaadott, Get-ChildItem keresési mintaparaméterrel.

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

Lásd még