I begynnelsen var det en cmdlet…
De fleste ganger, når du tenker på å skrive noe I PowerShell, vil du vanligvis finne i de første linjene en Get-ChildItem
, vil du da uunngåelig ha en for hver sløyfe.
Normalt ville jeg skrive dette som foreach($item in $items)
, men ved en anledning kom autofullføren opp på arrayvariabelen med et.ForEach
alternativ, jeg visste ikke riktig bruk av dette, så jeg prøvde den vanlige
Get-Help ForEach -ExamplesGet-Help ForEach -Online
div da dette egentlig ikke viste dette alternativet (for å være ærlig har jeg kanskje ikke gått til riktig hjelp fra ps), så jeg googlet det samme, som i utgangspunktet tok meg til en lignende side på ss64.com, men de ga en lenke til andreForEach
alternativer, hvorav en inneholdt hvordan Du bruker Foreach (Metode)
hvordan du bruker.ForEach
la oss 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, tillater denne formen for å skrive en ForEach fortsatt en multiline-setning, og så lenge du vet hvilke egenskaper du er etter at du aldri trenger å sette $ _ – objektet( men jeg vet at jeg vil).
Vokt Dere For Drager
Det er noe å være klar over I PowerShell versjon 3. Hvis $array
kan være null, må du legge inn en sjekk for det før du gjør dine handlinger.
if($items -ne $null){...}
hvis Du har brukt PowerShell 2, kan du være klar over dette problemet med arrays allerede.
i PowerShell 3 og over foreach loop håndterer null array objekter automatisk, men det vil ikke være før Du bruker PowerShell 5 som ForEach metoden håndterer null arrays.