i begyndelsen var der en cmdlet…
de fleste gange, når du tænker på at skrive noget i Kraftshell, finder du normalt inden for de første linjer en Get-ChildItem
, vil du uundgåeligt have en for hver løkke.
normalt ville jeg skrive dette som foreach($item in $items)
, men ved en lejlighed kom autofuldførelsen op på array-variablen med en .ForEach
valgmulighed, jeg vidste ikke den korrekte brug af dette, så jeg prøvede den sædvanlige
Get-Help ForEach -ExamplesGet-Help ForEach -Online
da dette ikke rigtig viste denne mulighed (for at være ærlig har jeg måske ikke gået til den rigtige hjælp fra PS), så jeg googlede det samme, som oprindeligt tog mig til en lignende side på ss64.com, men de gav et link til andre ForEach
indstillinger, hvoraf den ene indeholdt, hvordan man bruger ForEach (metode)
Sådan bruges .ForEach
lad os se, om jeg kan forklare det i kode:
$items.ForEach({# This exposes the $_ object, but I find that it doesn't know what each item is.# So I often find myself setting that to a new variable.$item = $_#I guess as you learn more and more you become versed in the ways of the object and can free type out the properties you need.})
som du kan se, tillader denne form for skrivning af en ForEach stadig en multiline-erklæring, og så længe du ved, hvilke egenskaber du er, når du aldrig behøver at indstille $ _ – objektet (men jeg ved, at jeg vil).
pas på drager
der er noget at være opmærksom på i Kraftshell version 3. Hvis $array
kunne være null, skal du sætte en check for det, før du gør dine handlinger.
if($items -ne $null){...}
Hvis du har brugt Strømshell 2, kan du være opmærksom på dette problem med arrays allerede.
i Kraftshell 3 og over foreach-sløjfen håndterer null array-objekter automatisk, men det vil ikke være, før du bruger Strømshell 5, at ForEach-metoden håndterer null-arrays.