Al desarrollar sus funciones de PowerShell, a veces necesita poner algunos valores de entrada a sus funciones, como un nombre de archivo, una cadena o cualquier otro valor. En PowerShell, hay dos formas de pasar parámetros a las funciones: a través del $ Argumentos variable y por ajuste parámetros formales.
Pasar parámetros a la función PoSh a través de la variable $Args
Veamos el ejemplo de función de PowerShell más simple que muestra texto en la pantalla:
Function TestPoShArgs { “I love PowerShell” } Add the $Args variable to the function: Function TestPoShArgs { “I love PowerShell $Args” }
Y ejecutarlo con algunos parámetros:
TestPoShArgs One Two Three
En este ejemplo, pasamos 3 parámetros a la entrada de la función, separados por espacios. A la salida de la función, también aparecen con espacios. Puede cambiar el delimitador de salida usando la variable especial $ OFS.
Function TestPoShArgs { $OFS="," “I love PowerShell $Args” } TestPoShArgs One Two Three
Ahora los valores devueltos en los resultados de la función están separados por comas.
La variable $Args es una matriz de PowerShell simple y puede acceder a sus valores individuales por números de secuencia (a partir de 0).
Function TestPoShArgs { "Total args number: $($Args.Count)" For($i=0; $i -lt $Args.Count; $i++) {$Args[$i]} } TestPoShArgs One Two Three Four
Como puede ver, la función calculó la cantidad de argumentos que se le pasaron y los enumeró línea por línea.
Pasar parámetros formales a funciones de PowerShell
Como en otros lenguajes de programación, puede establecer una serie de parámetros formales para las funciones de PowerShell. Durante la ejecución de la función, los valores de estos parámetros serán reemplazados por los argumentos pasados por el usuario.
Los parámetros formales se pasan entre paréntesis después del nombre de la función:
Function TestPoShParam ($curwidth, $curheight) { $summ=$curwidth+$curheight “Current summ $summ" } TestPoShParam 800 600
Esta función acepta dos parámetros como entrada y muestra su suma.
Al especificar argumentos de funciones, puede especificar nombres de parámetros; en este caso, su orden no importa:
TestPoShParam -curheight 800 -curwidth 800
De forma predeterminada, el propio PowerShell intenta determinar el tipo de valor en el parámetro. Pero puede especificar el tipo de la variable manualmente. Por ejemplo:
Function TestPoShParam ([int] $curheight_meter, [string] $curname) { “The mountain " + $curname + " is about " + ($curheight_meter/1000) +" km” } TestPoShParam 8848 'Everest'
Si intercambia parámetros con los tipos dados, las funciones de Powershell devolverán un error:
TestPoShParam: no se puede procesar la transformación de argumentos en el parámetro 'curheight_meter'. No se puede convertir el valor
“Everest” para escribir “System.Int32”. Error: "La cadena de entrada no tenía el formato correcto".
También en la función de PowerShell, puede especificar que algunos parámetros son obligatorios y su orden. Para ello se utiliza la siguiente sintaxis:
Function TestPoShParam { PARAM ( [PARAMETER(Mandatory=$True,Position=0,HelpMessage ="Specify full DB path")][ValidateLength(1,20)][String]$DBPath, [PARAMETER(Mandatory=$True,Position=1,HelpMessage ="Specify max DB size")][String]$MaxSize, [PARAMETER(Mandatory=$False,Position=2)][String]$Type="MSSQL" ) Return("Path:" +$DBPath + " DB_size:" + $maxsize + " DB_type:" + $Type) } TestPoShParam -DBPath 'c:mysql' -MaxSize 20
En este ejemplo, aparecieron argumentos adicionales cerca del interruptor Parámetro:
- Obligatorio – si se especifica True, este parámetro de función es muy necesario;
- Mensaje de ayuda – ayuda para el usuario sobre el parámetro de función;
- Posición – posición del argumento al llamar a la función (los parámetros deben especificarse en un orden estrictamente definido. Si no especifica uno de los parámetros, PowerShell se lo recordará automáticamente y le ofrecerá ingresar la información que falta);
- ValidateLength – longitud máxima del argumento (no puede usar un valor con una longitud mayor que el límite del argumento especificado).
Recomendado para ti
- Amazon Prime Video (Video on Demand)
- Joseph Gordon-Levitt, Shailene Woodley, Melissa Leo (Actors)
- Oliver Stone (Director)
- Amazon Prime Video (Video on Demand)
- Christoffer Nordenrot, Jesper Barkselius, Lisa Henni (Actors)
- Victor Danell (Director)
- Amazon Prime Video (Video on Demand)
- Sara G., Rafael Darro, Jasp Sanpere (Actors)
- Chico Morera (Director)