it-swarm.com.de

Was bedeutet $ _ in PowerShell?

Ich habe in PowerShell häufig Folgendes gesehen, aber was genau macht es?

$_
202
Micah

Dies ist die Variable für den aktuellen Wert in der Rohrleitung, die in Powershell 3 und neuer $PSItem heißt. 

1,2,3 | %{ write-Host $_ } 

oder

1,2,3 | %{ write-Host $PSItem } 

Im obigen Code wird beispielsweise der %{}-Block für jeden Wert im Array aufgerufen. Die Variable $_ oder $PSItem enthält den aktuellen Wert. 

149
JaredPar

Ich denke, der einfachste Weg, um über diese Variable nachzudenken, wie den Eingabeparameter in Lambda-Ausdrücken in C #. Das heißt $_ ähnelt x in x => Console.WriteLine(x) anonymer Funktion in C #. Betrachten Sie folgende Beispiele:

Power Shell:

1,2,3 | ForEach-Object {Write-Host $_}

Drucke:

1
2
3

oder

1,2,3 | Where-Object {$_ -gt 1}

Drucke:

2
3

Und vergleichen Sie dies mit der C # -Syntax mit LINQ:

var list = new List<int> { 1, 2, 3 };
list.ForEach( _ => Console.WriteLine( _ ));

Drucke:

1
2
3

oder

list.Where( _ => _ > 1)
    .ToList()
    .ForEach(s => Console.WriteLine(s));

Drucke:

2
3
34

Laut this website handelt es sich dabei um einen Verweis auf this, meistens in Schleifen.

$ _ (Dollarunterstrich) "DIESES" Token. Bezieht sich normalerweise auf die Element innerhalb einer Foreach-Schleife. Aufgabe: Alle Artikel einer Sammlung drucken . Lösung. ... | foreach {Write-Host $ _}

27
Ikke

$ _ ist ein Alias ​​für die automatische Variable $ PSItem (eingeführt in PowerShell V3.0; Informationen zur Verwendung finden Sie hier ), die das aktuelle Element aus der Pipe darstellt.

Die Online-Dokumentation der PowerShell (v6.0) für automatische Variablen ist hier .

3
Xalorous

$ _ ist eine Variable, die jedes Objekt/Element, das vom vorherigen | übergeben wurde, durchläuft (Rohr).

1
Bill

$_ ist eine vom System erstellte Variable, die normalerweise in Blockausdrücken enthalten ist, auf die von Cmdlets verwiesen wird, die mit Pipe verwendet werden, wie Where-Object und ForEach-Object

Es kann jedoch auch in anderen Arten von Ausdrücken verwendet werden, zum Beispiel mit Select-Object in Kombination mit Ausdruckseigenschaften. Get-ChildItem | Select-Object @{Name="Name";Expression={$_.Name}}. In diesem Fall stellt $_ das Element dar, das weitergeleitet wird, es können jedoch mehrere Ausdrücke vorhanden sein.

Es kann auch durch die Überprüfung benutzerdefinierter Parameter referenziert werden, wobei ein Skriptblock zum Validieren eines Werts verwendet wird. In diesem Fall stellt $_ den Parameterwert dar, der vom Aufruf empfangen wurde.

Die nächste Analogie zu c # und Java ist der Lamda-Ausdruck. Wenn Sie Powershell in die Grundlagen unterteilen, ist alles ein Skriptblock, einschließlich einer Skriptdatei a, Funktionen und Cmdlets. Sie können Ihre eigenen Parameter definieren, aber in manchen Fällen werden Sie vom System erstellt, das das zu verarbeitende Eingabeelement darstellt. In diesen Situationen lautet die automatische Variable $_.

0
Alex Sarafian