Saved Keystrokes

Am Anfang gab es ein Cmdlet…

Wenn Sie darüber nachdenken, etwas in PowerShell zu schreiben, finden Sie normalerweise in den ersten Zeilen a Get-ChildItem, Sie werden dann unweigerlich eine for each Schleife haben.

Normalerweise würde ich dies als foreach($item in $items) schreiben, aber einmal kam die automatische Vervollständigung auf der Array-Variablen mit einer .ForEach Option, ich wusste nicht, die korrekte Verwendung von diesem, so dass ich versuchte, die übliche

Get-Help ForEach -ExamplesGet-Help ForEach -Online

a dies diese Option nicht wirklich zeigte (um ehrlich zu sein, bin ich möglicherweise nicht zur richtigen Hilfe von PS gegangen), habe ich dasselbe gegoogelt, was mich zunächst zu einer ähnlichen Seite auf ss64 führte.com, aber sie lieferten einen Link zu anderen ForEach Optionen, von denen eine enthielt, wie man die ForEach (Methode)

Wie man benutzt .ForEach

Mal sehen, ob ich es im Code erklären kann:

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

Wie Sie sehen können, erlaubt diese Form des Schreibens eines ForEach immer noch eine mehrzeilige Anweisung, und solange Sie wissen, welche Eigenschaften Sie haben, müssen Sie das $_ Objekt nie setzen (aber ich weiß, dass ich es tun werde).

Vorsicht vor Drachen

In PowerShell Version 3 gibt es etwas zu beachten. Wenn die $array null sein könnte, müssen Sie dies überprüfen, bevor Sie Ihre Aktionen ausführen.

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

Wenn Sie PowerShell 2 verwendet haben, kennen Sie dieses Problem möglicherweise bereits mit Arrays.

In PowerShell 3 und höher behandelt die foreach-Schleife Null-Array-Objekte automatisch, aber erst mit PowerShell 5 behandelt die ForEach-Methode Null-Arrays.

Also… gefällt es mir?

Related Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.