Retorno de función de PowerShell – TrucosInformaticos

Powershell

Los que incursionaron en la programación estarían familiarizados con el devolver palabra clave. El uso primario de devolver, como su nombre lo indica, es devolver el resultado y salir de un ámbito. El ámbito puede ser una función, un script o un bloque de script. Una vez que se invoca la palabra clave de retorno, PowerShell libera el control al bloque de código de llamada.

Retorno de PowerShell: conceptos básicos

Para ilustrar, el siguiente código imprime la cadena «el numero es %n«, dónde %norte es de 1 a 5.

for ($i = 1; $i -le 5; $i++) { 
"The number is $i" 
}

Pero cuando inserta la palabra clave de retorno después del resultado, toda la iteración finaliza después del primer resultado.

for ($i = 1; $i -le 5; $i++) { 
"The number is $i" 
return 
}

Como puede ver a continuación, el ciclo for finaliza después de que se muestra el primer resultado debido a la devolver palabra clave que siguió.

valor de retorno de la función powershell

Veamos otro ejemplo. El siguiente código imprime la cadena «el numero es %n» dónde %norte son los números del 1 al 5. El resultado se mostrará dos veces en cada iteración, una en verde y otra en magenta.

1..5 | ForEach-Object { 
Write-Host "The number is $_" -ForegroundColor Green 
Write-Host "The number is $_" -ForegroundColor Magenta 
}

valor de retorno de powershell de la función

Pero cuando inserta la palabra clave de retorno, finaliza el bucle y devuelve el control al código de llamada.

1..5 | ForEach-Object { 
Write-Host "The number is $_" -ForegroundColor Green 
return 
Write-Host "The number is $_" -ForegroundColor Magenta 
}

función de retorno de powershell

Parece sencillo, ¿verdad? Entiendes la esencia. Pero la palabra clave de retorno de PowerShell tiene más utilidad que simplemente terminar el alcance actual.

Retorno de función de PowerShell

La palabra clave return utiliza la siguiente sintaxis.

return [<expression>]

El [<expression>] puede ser cualquier objeto y tipo de datos de PowerShell, como booleano, entero, cadena, etc. Da como resultado que PowerShell se envíe al flujo de salida de forma predeterminada, incluso sin invocar el devolver palabra clave. entonces cuando es devolver ¿útil?

Ejemplo 1: devolver un valor calculado

Usemos return en una función llamada Obtener cuadrado usando el código de abajo.

Function Get-Square($number) { 
return [math]::Sqrt($number) 
"This line will not be displayed" 
}

Como puede ver, el retorno de la función de PowerShell muestra el resultado y sale de la función. El «Esta línea no se mostrará” no fue enviado a la salida.

salida de función powershell a variable

Nota. Obtenga información sobre cómo comentar el código de PowerShell.

Ejemplo 2: devolver el resultado de una coincidencia condicional

Otro ejemplo práctico de devolución de función de PowerShell es cuando se devuelve una coincidencia de una condición. Cuando ejecuta una función que verifica si el valor coincide con una colección, la palabra clave de retorno puede devolver el resultado y finalizar la búsqueda en esa instancia.

Primero, probemos una función sin la palabra clave return.

Function Find-Number { 
param ( 
[int[]]$numCollection, 
[int]$numToFind 
) 
for ($i = 0 ; $i -lt $numCollection.Count; $i++) { 
if ($numCollection[$i] -eq $numToFind) { 
"Found the number $numToFind at position $i" 
} 
} 
}

Este Buscar número La función toma dos parámetros:

  • $numColección — una matriz de números para usar como valores de búsqueda.
  • $numToFind — el único número a encontrar en el $numColección formación.

Ahora invoquemos la función ejecutando el siguiente comando.

Find-Number -numCollection 1,5,3,6,7,6 -numToFind 6

El comando buscará el número. 6 con la matriz de 1,5,3,6,7,6. De acuerdo con el resultado a continuación, la función encontró dos instancias del número 6 en la colección, lo cual es correcto.

objeto de retorno de la función powershell

Pero, ¿y si queremos que la función termine cuando encuentre la primera instancia? Entonces podemos usar el devolver palabra clave en su lugar. Agreguemos la palabra clave return al comienzo de la línea 8.

retorno de powershell

Esta vez, la función de PowerShell devuelve la primera instancia y finaliza.

cadena de retorno de la función powershell

Ejemplo 3: devolver múltiples objetos

También puede controlar los objetos a la salida usando el devolver palabra clave. Por ejemplo, la siguiente función (ObtenerServicioYProceso) devuelve dos objetos: Servicios (Sistema.Servicio.ServiceController) y Procesos (Sistema.Diagnóstico.Proceso).

Function GetServiceAndProcess { 
return ` 
$( 
Get-Service -ErrorAction SilentlyContinue | Select-Object -First 5 
), 
$( 
Get-Process -ErrorAction SilentlyContinue | Select-Object -First 5 
) 
}

Invoque la función de PowerShell y almacene los resultados en el $resultado variable.

$result = GetServiceAndProcess 
($result[0] | Get-Member)[0].TypeName 
($result[1] | Get-Member)[0].TypeName

función de retorno de powershell

O puede almacenar el resultado de retorno de la función PowerShell en variables separadas de esta manera:

$service, $process = GetServiceAndProcess 
$service 
$process

tipo de retorno de la función powershell

Conclusión

La palabra clave return de PowerShell tiene dos propósitos principales: devolver resultados y finalizar el ámbito actual. El uso de la palabra clave de devolución de función de PowerShell le permite controlar la salida de su código y cuándo y dónde salir.

4.5/5 - (210 votos)

Deja una respuesta

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