Funciones avanzadas de PowerShell: enlaces y parámetros de cmdlet
HogarHogar > Blog > Funciones avanzadas de PowerShell: enlaces y parámetros de cmdlet

Funciones avanzadas de PowerShell: enlaces y parámetros de cmdlet

Aug 22, 2023

Brien Posey | 08 de agosto de 2023

PowerShell, al igual que otros lenguajes de programación, utiliza funciones como bloques de código repetibles.

Las funciones son útiles para aislar grandes bloques de código del cuerpo principal del script. De hecho, incluso puedes convertir una función de PowerShell en un cmdlet independiente. A continuación se muestra un ejemplo de un script básico de PowerShell que contiene una función:

Relacionado: Cómo filtrar objetos en PowerShell

Como puede ver, el script hace poco más que mostrar un par de líneas de texto, llamar a una función (llamada Do-Something) y luego mostrar un par de líneas más de texto. El código de la función está entre llaves.

Ahora, habiendo visto un ejemplo de una función básica, analicemos las funciones avanzadas en PowerShell. El término "función avanzada" tiene un significado específico y no tiene nada que ver con la complejidad de la función. Una función avanzada es una función que admite enlaces de cmdlet, parámetros o ambos.

Exploraremos qué significan estos términos y cómo podemos transformar la función básica que se muestra arriba en una función avanzada.

Si alguna vez examinó la sintaxis de los cmdlets nativos de PowerShell, habrá notado que muchos cmdlets admiten parámetros comunes. Por ejemplo, en la Figura 1, puede ver que el cmdlet Get-Service permite el uso de parámetros comunes.

Figura 1.La mayoría de los cmdlets nativos de PowerShell permiten el uso de parámetros comunes.

Los parámetros comunes son tal como sugiere el nombre: parámetros que son ampliamente compatibles con los cmdlets nativos de PowerShell. Los parámetros comunes populares incluyen:

He aquí por qué menciono los parámetros comunes: cuando agrega enlaces de cmdlet a una función, habilita la función para que admita parámetros comunes. Esto puede sonar un poco extraño, pero se relaciona con la idea de convertir una función en un cmdlet independiente.

PowerShell simplifica la adición de enlaces de cmdlets a una función. Simplemente agregue estas dos líneas debajo de la declaración de la función:

Por más sencilla que sea esta técnica, es importante comprender que agregar un enlace de cmdlet a una función no hace mucho por sí solo. Aún debe indicarle a PowerShell cómo se deben usar los parámetros comunes. Afortunadamente, esto suele ser más fácil de lo que parece.

Un parámetro común de uso común es ErrorAction, que le indica a un script de PowerShell cómo manejar errores no fatales que pueden ocurrir al ejecutar la función.

Para demostrar cómo funciona esto, eche un vistazo al siguiente script:

Este script se parece mucho al que presenté anteriormente, con algunas líneas de código adicionales:

Al ejecutar el script, mostrará un error. Sin embargo, la función seguirá ejecutándose a pesar del error porque el error no fue fatal. Puede ver cómo se ve esto en la Figura 2. Para ser justos, incluso si no hubiera incluido una acción de error, la función habría seguido ejecutándose en caso de un error no fatal, ya que esa es la forma normal de hacer las cosas en PowerShell.

Figura 2.Cuando el script de PowerShell encuentra un error, la función continúa ejecutándose.

Hay un par de formas más de manejar el error. En la Figura 3, puede ver lo que sucede cuando la acción de error se cambia a Detener. En este caso, aunque el error no es grave, PowerShell finaliza la función al encontrar el error. Vale la pena señalar que dado que la acción de error se aplica a la llamada a la función, solo la función (no todo el script) finaliza cuando ocurre el error. Cuando encuentra el error, PowerShell simplemente abandona la función, regresa al cuerpo del script y continúa ejecutando el resto del script.

Figura 3.Establecer ErrorAction en Stop hace que la función finalice cuando se produce un error.

La Figura 4 muestra lo que sucede cuando configura la acción de error en Continuar silenciosamente. En este caso, aunque se produzca el error, PowerShell oculta el mensaje de error y procede a ejecutar la función hasta su finalización.

Figura 4.Configurar ErrorAction en SilentlyContinue suprime el mensaje de error, lo que permite que PowerShell continúe ejecutando la función sin interrupción.

Hasta ahora, he demostrado cómo usar enlaces de cmdlet para controlar lo que sucede cuando una función de PowerShell produce un error no fatal. Sin embargo, hay mucho más que se podría hacer. En la Parte 2, profundizaré en la discusión y explicaré más lo que puede hacer con los enlaces de cmdlet.

Sobre el Autor

Más información sobre formatos de texto

Parámetros comunesFigura 1.Enlaces de cmdletUso del enlace de cmdlet para habilitar el manejo de erroresFigura 2.Figura 3.Figura 4.Sobre el Autor