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.

parámetro de la función powershell

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.

argumentos de la función powershell

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' 

parámetro predeterminado de la función powershell

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

tipos de parámetros de la función powershell

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