usar tutorial script como commands comandos powershell

tutorial - ¿Qué significa $_en PowerShell?



powershell tutorial (6)

He visto lo siguiente en PowerShell, pero ¿qué hace exactamente?

$_


$ _ es un alias para la variable automática $ PSItem (introducida en PowerShell V3.0; información de uso encontrada aquí ) que representa el elemento actual de la tubería.

La documentación en línea de PowerShell (v6.0) para variables automáticas está here .


$ _ es una variable que itera sobre cada objeto / elemento pasado de la anterior | (tubo).


Creo que la forma más fácil de pensar acerca de esta variable es el parámetro de entrada en la expresión lambda en C #. Es decir, $_ es similar a x en x => Console.WriteLine(x) función anónima en C #. Considere los siguientes ejemplos:

Potencia Shell:

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

Huellas dactilares:

1 2 3

o

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

Huellas dactilares:

2 3

Y compare esto con la sintaxis de C # usando LINQ:

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

Huellas dactilares:

1 2 3

o

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

Huellas dactilares:

2 3


Esta es la variable para el valor actual en la línea de tubería, que se llama $PSItem en Powershell 3 y más reciente.

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

o

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

Por ejemplo, en el código anterior, se llama al bloque %{} para cada valor de la matriz. La variable $_ o $PSItem contendrá el valor actual.


Según this sitio web, es una referencia a this , principalmente en loops.

$ _ (subrayado en dólares) ''ESTE'' token. Normalmente se refiere al elemento dentro de un bucle foreach. Tarea: Imprimir todos los elementos en una colección. Solución. ... | foreach {Write-Host $ _}


$_ es una variable creada por el sistema generalmente dentro de las expresiones de bloque a las que hacen referencia los cmdlets que se usan con tuberías como Where-Object y ForEach-Object .

Pero también se puede usar en otros tipos de expresiones, por ejemplo, con Select-Object combinado con propiedades de expresión. Get-ChildItem | Select-Object @{Name="Name";Expression={$_.Name}} Get-ChildItem | Select-Object @{Name="Name";Expression={$_.Name}} . En este caso, $_ representa el elemento que se está canalizando, pero pueden existir múltiples expresiones.

También se puede hacer referencia a la validación de parámetros personalizados, donde se utiliza un bloque de script para validar un valor. En este caso, $_ representa el valor del parámetro como se recibió de la invocación.

La analogía más cercana a c # y java es la expresión lamda. Si desglosa PowerShell a lo básico, entonces todo es un bloque de script que incluye un archivo de script a, funciones y cmdlets. Puede definir sus propios parámetros, pero en algunas ocasiones el sistema crea uno que representa el elemento de entrada para procesar / evaluar . En esas situaciones la variable automática es $_ .