Pulsaciones de teclas guardadas

Al principio, había un cmdlet

La mayoría de las veces, cuando piensa escribir algo en PowerShell, generalmente encontrará dentro de las primeras líneas unGet-ChildItem, luego inevitablemente tendrá una para cada bucle.

Normalmente escribiría esto como foreach($item in $items), pero en una ocasión apareció el autocompletado en la variable de matriz con una opción .ForEach, no sabía el uso correcto de esto, así que probé la opción habitual

Get-Help ForEach -ExamplesGet-Help ForEach -Online

Como esto realmente no mostraba esta opción (para ser honesto, puede que no haya ido a la ayuda correcta de PS), busqué en Google lo mismo, lo que inicialmente me llevó a una página similar en ss64.com, pero proporcionaron un enlace a otras opciones ForEach, una de las cuales contenía cómo usar el método ForEach

Cómo usarlo .ForEach

veamos si puedo explicarlo en código:

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

Como puede ver, esta forma de escribir un ForEach todavía permite una instrucción multilínea, y siempre que sepa qué propiedades busca, nunca tendrá que configurar el objeto $ _ (pero sé que lo haré).

Tenga cuidado con los dragones

Hay algo que debe tenerse en cuenta en la versión 3 de PowerShell. Si el $array podría ser nulo, debe verificar eso antes de realizar sus acciones.

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

Si ha utilizado PowerShell 2, es posible que ya esté al tanto de este problema con las matrices.

En PowerShell 3 y superior, el bucle foreach controla automáticamente los objetos de matriz nula, pero no será hasta que utilice PowerShell 5 que el método ForEach controla las matrices nulas.

Así que do ¿me gusta?

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *