Obtener argumentos de línea de comandos en Windows PowerShell

  1. Definir parámetros en el script de PowerShell
  2. Parámetros con nombre en el script de PowerShell
  3. Asignar valores predeterminados a los parámetros en el script de PowerShell
  4. Cambiar parámetros en PowerShell Script
  5. Parámetros obligatorios en el script de PowerShell
Obtener argumentos de línea de comandos en Windows PowerShell

Manejamos los argumentos usando la función de parámetros de Windows PowerShell llamada param(). La función de parámetros de Windows PowerShell es un componente fundamental de cualquier secuencia de comandos. Un parámetro es cómo los desarrolladores permiten a los usuarios de secuencias de comandos proporcionar entradas en tiempo de ejecución.

En este artículo, aprenderá cómo crear secuencias de comandos con la función de parámetro, cómo utilizarlos y algunas prácticas recomendadas para crear parámetros.

Definir parámetros en el script de PowerShell

Los administradores pueden crear parámetros para scripts y funciones utilizando la función de parámetros param(). Una función contiene uno o más parámetros definidos por variables.

Hola_Mundo.ps1:

param(
     $message
)

Sin embargo, para garantizar que el parámetro acepte solo el tipo de entrada que necesita, las mejores prácticas dictan asignar un tipo de datos al parámetro con el uso de un bloque de parámetros [Parameter()] y encerrar el tipo de datos entre corchetes [] antes de la variable.

Hola_Mundo.ps1:

param(
    [Parameter()]
    [String]$message
)

En el ejemplo Hello_World.ps1 anterior, la variable message solo aceptará un valor pasado si el valor dado tiene un tipo de datos String.

Parámetros con nombre en el script de PowerShell

Una forma de usar la función de parámetro en un script es a través del nombre del parámetro; este método se llama parámetros con nombre. Al llamar a un script o función a través de parámetros con nombre, usamos el nombre de la variable como el nombre completo del parámetro.

Creamos un Hello_World.ps1 y definimos variables dentro de la función de parámetro en este ejemplo. Recuerda que podemos poner una o más variables dentro de la función parámetro.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion
)

Write-Output $message
Write-Output "I am $emotion"

Luego podemos usar los parámetros nombrados como argumento al ejecutar un archivo .ps1.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy'

Producción :

Hello World!
I am happy

Asignar valores predeterminados a los parámetros en el script de PowerShell

Podemos preasignar un valor a un parámetro dándole al parámetro un valor dentro del script. Luego, ejecutar el script sin pasar valores desde la línea de ejecución tomará el valor predeterminado de la variable definida dentro del script.

param(
    [Parameter()]
    [String]$message = "Hello World",
    [String]$emotion = "happy"
)

Write-Output $message
Write-Output "I am $emotion"
.\Hello_World.ps1

Producción :

Hello World!
I am happy

Cambiar parámetros en PowerShell Script

Otro parámetro que podemos usar es el parámetro switch definido por el tipo de dato [switch]. El parámetro switch se utiliza para valores binarios o booleanos para indicar true o false.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

Podemos llamar a nuestro script con el parámetro script usando la siguiente sintaxis.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy' -display:$false

Producción :

User denied confirmation.

Parámetros obligatorios en el script de PowerShell

Es común tener uno o más parámetros que deben usarse cuando se ejecuta un script. Podemos hacer que un parámetro sea obligatorio agregando un atributo Mandatory dentro del bloque de parámetros [Parameter()].

Hola_Mundo.ps1:

param(
    [Parameter(Mandatory)]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

Al ejecutar Hello_World.ps1, Windows PowerShell no permitirá que se ejecute el script y le solicitará un valor.

.\Hello_World.ps1

Producción :

cmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message:
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn