az elején, volt egy parancsmagot…
a Legtöbb alkalommal, amikor hiszem, hogy írd meg a PowerShell, akkor általában belül az első sorok egy Get-ChildItem
, akkor elkerülhetetlenül egy minden hurok.
Általában azt írnám, mint a foreach($item in $items)
, de egy alkalommal az automatikus kiegészítés jött a tömb változó egy .ForEach
lehetőséget, Nem tudtam, hogy a helyes használatát, hogy ez így próbáltam a szokásos
Get-Help ForEach -ExamplesGet-Help ForEach -Online
ez nem az igazi, ezt a lehetőséget (hogy őszinte legyek, talán nem ment el, hogy a megfelelő segítséget a PS), így rákerestem, hogy ugyanaz a dolog, amely kezdetben elvitt egy hasonló oldalt ss64.com, de adtak egy linket más ForEach
opciók, amelyek közül az egyik tartalmazza, hogyan kell használni a ForEach (módszer)
hogyan kell használni .ForEach
lássuk, ha tudom magyarázni a kódot:
$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.})
Mint látható, ebben a formában, írok egy ForEach még lehetővé teszi, hogy egy többsoros nyilatkozatot, amíg tudod, hogy milyen tulajdonságok maga után, hogy nem a $_ tárgy (de tudom, hogy így lesz).
Óvakodj a sárkányoktól
van valami, amit tudni kell a PowerShell 3. verziójában. Ha a$array
null lehet, akkor ezt ellenőriznie kell a műveletek elvégzése előtt.
if($items -ne $null){...}
Ha a PowerShell 2-t használta, akkor már tudatában lehet ennek a problémának a tömbökkel.
a PowerShell 3-ban vagy a foreach-hurok felett A null array objektumokat automatikusan kezeli, de csak akkor, ha a PowerShell 5-et használja, a ForEach-módszer null tömböket kezel.