Saved Keystrokes

alussa oli cmdlet…

useimmiten, kun ajattelet kirjoittavasi jotain Powershelliin, löydät yleensä ensimmäisten rivien sisältä Get-ChildItem, sinulla on sitten väistämättä jokaiselle silmukalle.

normaalisti kirjoittaisin tämän foreach($item in $items), mutta erään kerran automaattitäydennys tuli vastaan array-muuttujalla .ForEach optio, en tiennyt tämän oikeaa käyttöä, joten kokeilin tavallista

Get-Help ForEach -ExamplesGet-Help ForEach -Online

koska tämä ei oikein näyttänyt tätä vaihtoehtoa (ollakseni rehellinen en ehkä mennyt oikeaan apuun PS: ltä), niin googlasin saman asian, joka vei minut aluksi samanlaiselle sivulle ss64: llä.com, mutta ne tarjosivat linkin muihin ForEach – vaihtoehtoihin, joista yksi sisälsi Foreachin (metodi) käytön

käytön .ForEach

katsotaan, pystynkö selittämään sen koodilla:

$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.})

kuten näette, tämä Foreachin kirjoitusmuoto sallii vielä monirivisen lausuman, ja kunhan tietää mitä ominaisuuksia on, kun ei tarvitse koskaan asettaa $ _ – objektia (mutta tiedän sen kyllä).

Beware of Dragons

PowerShellin versiossa 3 on jotain tiedostettavaa. Jos $array voi olla nolla, sinun täytyy tarkistaa se ennen kuin teet tekosi.

if($items -ne $null){...}

Jos olet käyttänyt PowerShell 2: ta, saatat olla tietoinen tästä ongelmasta jo matriiseissa.

PowerShell 3: ssa ja sen yläpuolella foreach-silmukka käsittelee nollarakenteita automaattisesti, mutta ForEach-menetelmä käsittelee nollarakenteita vasta PowerShell 5: n käytön jälkeen.

So … do I like it?

Related Posts

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *