taste salvate

la început, a existat un cmdlet…

de cele mai multe ori, când vă gândiți să scrieți ceva în PowerShell, veți găsi de obicei în primele linii un Get-ChildItem, veți avea inevitabil un pentru fiecare buclă.

în mod normal, aș scrie acest lucru ca foreach($item in $items), dar cu o ocazie completarea automată a venit pe variabila matrice cu o .ForEach opțiune, nu știam utilizarea corectă a acestui așa că am încercat de obicei

Get-Help ForEach -ExamplesGet-Help ForEach -Online

deoarece acest lucru nu a arătat cu adevărat această opțiune (pentru a fi sincer, poate că nu am mers la ajutorul potrivit de la PS), așa că am căutat pe Google același lucru, care inițial M-a dus la o pagină similară pe ss64.com, dar au furnizat un link către alte ForEach opțiuni, dintre care una conținea modul de utilizare a ForEach (metoda)

cum se utilizează .ForEach

să vedem dacă pot explica în Cod:

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

după cum puteți vedea, această formă de scriere a unui ForEach permite încă o declarație multilinie și atâta timp cât știți ce proprietăți aveți după ce nu trebuie să setați obiectul $ _ (Dar știu că o voi face).

Feriți-vă de dragoni

există ceva să fie conștienți de în PowerShell versiunea 3. Dacă $array ar putea fi nul, trebuie să verificați acest lucru înainte de a face acțiunile.

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

Dacă ați folosit PowerShell 2, este posibil să fiți deja conștienți de această problemă cu matricele.

în PowerShell 3 și deasupra buclei foreach se ocupă automat de obiectele matrice nule, dar nu va fi până când nu utilizați PowerShell 5 că metoda ForEach se ocupă de matrice nule.

deci … îmi place?

Related Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *