Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 .*