Descripción de las funciones en PowerShell
En lugar de copiar y pegar el mismo código una y otra vez, cree una función de PowerShell.
Al comenzar a escribir scripts de PowerShell, no necesariamente le preocupan cosas como la modularidad, la reutilización y las «prácticas recomendadas».»Te estás mojando los pies. Sin embargo, a medida que pasa el tiempo, pronto te darás cuenta de que empiezas a repetirte en código.Notarás que la necesidad de hacer lo mismo una y otra vez es cada vez mayor. Podrías copiar y pegar el mismo código, pero no es sostenible. En su lugar, ¿por qué no crear pequeños «bloques de construcción» en el código para que puedan ser reutilizados? Es hora de empezar a crear funciones de PowerShell.
Una función de PowerShell es una agrupación de código que tiene una entrada y una salida opcionales. Es una forma de recopilar un montón de código para realizar una o muchas veces diferentes simplemente apuntando a él en lugar de duplicar ese código repetidamente.
funciones Básicas
Hay dos tipos de funciones en PowerShell. Tenemos una función «básica» y una función avanzada. Las funciones «básicas» son la forma más simple de una función que se puede crear. No tienen ninguna de las capacidades incorporadas de lujo que tienen las funciones avanzadas. Se crea o declara utilizando la instrucción function seguida de un conjunto de llaves.
function Do-Something {}
Lo anterior es técnicamente una función a la que luego se puede llamar invocando Do-Something, pero como verás, no hace mucho. Esto se debe a que no hemos incluido ningún código para ejecutar. Agreguemos un código simple dentro para asegurarnos de que hace algo. Para demostrarlo, usaré el comando Write-Host que escribe texto en la consola de PowerShell.
función Hacer algo {
Write-Host ‘ ¡Hice algo!’
}
PS > Hacer-Algo
yo hice algo!
Ahora puede ver más arriba que cuando se invoca; ejecuta el código dentro de la función. ¿Qué pasa si queremos pasar algo al código dentro de la función cuando se está ejecutando? Podemos crear uno o más parámetros dentro de un bloque de parámetros.
function Do-Something {
param(String String)
Write-Host «Hice algo String String!»}
PS > Do-Something-String ‘thing’
Hice algo I ¡cosa!
Observe que he especificado el parámetro de cadena añadiendo un guion seguido del nombre del parámetro seguido del valor justo después de llamar a Hacer algo. Esto es lo básico para pasar parámetros a funciones.
Funciones avanzadas
Las funciones básicas funcionan, pero la mayoría de las veces te encontrarás creando funciones avanzadas. Las funciones avanzadas son funciones que incluyen toda la funcionalidad como funciones básicas, pero también vienen con algunas características incorporadas que las funciones básicas no incluyen. Por ejemplo, PowerShell tiene un concepto de secuencias llamado Error, Advertencia, Detalle detallado, etc. Estos flujos son críticos para mostrar correctamente la salida a los usuarios. Las funciones básicas no entienden inherentemente estos flujos.
Digamos que queremos mostrar un mensaje de error si algo sucede dentro de la función. Sin embargo, también queremos la capacidad de ocultar este mensaje de error por alguna razón solo en ciertos momentos. Con una función básica, sería difícil hacer esto. Sin embargo, con una función avanzada, esa funcionalidad está incorporada. Las funciones avanzadas, de forma predeterminada, ya tienen parámetros, incluso si no los incluye, como Verbose, ErrorAction, WarningVariable, etc. Estos se pueden aprovechar de diferentes maneras. En nuestro ejemplo de error, digamos que he modificado nuestra función para que sea «avanzada» usando la palabra clave.
function Do-Something {
param (String String )
Mensaje de error de escritura ‘Peligro, Will Robinson!’
}
PS > Do-Something
Do-Something: Danger, Will Robinson!
En línea:1 carácter:1
+ Do-Algo
+ ~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) ,
WriteErrorException
+ FullyQualifiedErrorId :
Microsoft.PowerShell.Comando.WriteErrorException, Do-Something
Cuando se ejecuta, verá inmediatamente texto rojo que indica que proviene de la secuencia de errores. Ahora silenciemos este error.
Hacer algo ErrorAction SilentlyContinue
El parámetro ErrorAction es solo un parámetro incorporado en cada función avanzada. Hay mucho más en las funciones de PowerShell que no tuvimos tiempo de cubrir. Para obtener un desglose completo de todo lo que las funciones avanzadas pueden hacer por usted, consulte el tema de ayuda about_advanced_functions.