Gennemse avanceret syntaks for at optælle objekter i pipelinen

Fuldført

Den avancerede syntaks for optælling giver større fleksibilitet og funktionalitet end den grundlæggende syntaks. I stedet for at give dig adgang til et enkelt objektmedlem kan du køre et helt script. Dette script kan indeholde én kommando, eller det kan indeholde mange kommandoer i rækkefølge.

Hvis du f.eks. vil kryptere et sæt filer ved hjælp af den avancerede syntaks, skal du angive følgende kommando i konsollen og derefter vælge Enter:

Get-ChildItem –Path C:\ToEncrypt\ -File | ForEach-Object –Process { $PSItem.Encrypt() }

Kommandoen ForEach-Object kan acceptere et vilkårligt antal objekter fra pipelinen. Den har parameteren -Process, der accepterer en scriptblok. Denne scriptblok kører én gang for hvert objekt, der blev pipeinddelt. Hver gang scriptblokken kører, kan den indbyggede variabel $PSItem (eller $_) bruges til at referere til det aktuelle objekt. I den foregående eksempelkommando kører metoden Encrypt() for hvert filobjekt.

Seddel

Når metodenavne bruges sammen med den avancerede syntaks, efterfølges de altid af start- og slutparenteser, også selvom metoden ikke har nogen inputargumenter. For metoder, der har brug for inputargumenter, skal du angive dem som en kommasepareret liste i parenteserne. Medtag ikke et mellemrum eller andre tegn mellem metodenavnet og startparentesen.

Avancerede teknikker

I nogle situationer skal du muligvis gentage en bestemt opgave et angivet antal gange. Du kan bruge ForEach-Object- til dette formål, når du sender det et input, der bruger områdeoperatoren. Den områdeoperator er to punktummer (..) uden mellemrum mellem dem. Kør f.eks. følgende kommando:

1..100 | ForEach-Object { Get-Random }

I den foregående kommando opretter områdeoperatoren heltalsobjekter fra 1 til og med 100. Disse 100 objekter sendes til ForEach-Object, hvilket tvinger scriptblokken til at køre 100 gange. Men da hverken $_ eller $_PSItem vises i scriptblokken, bruges de faktiske heltal ikke. Kommandoen Get-Random kører i stedet 100 gange. Heltalsobjekterne bruges kun til at angive det antal gange, scriptblokken kører.