Gennemse avanceret syntaks for at optælle objekter i pipelinen
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.