Cómo obtener argumentos de línea de comando en Windows PowerShell

  1. Definir Parámetros en un Script de PowerShell
  2. Parámetros Nombrados en un Script de PowerShell
  3. Asignar Valores Predeterminados a Parámetros en un Script de PowerShell
  4. Parámetros Switch en un Script de PowerShell
  5. Parámetros Obligatorios en un Script de PowerShell
Cómo obtener argumentos de línea de comando en Windows PowerShell

Manejamos argumentos utilizando 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 script. Un parámetro es la forma en que los desarrolladores permiten a los usuarios del script proporcionar entradas en tiempo de ejecución.

En este artículo, aprenderás cómo crear scripts con la función de parámetros, usarlos y algunas buenas prácticas para construir parámetros.

Definir Parámetros en un 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.

Hello_World.ps1:

 powershellCopyparam(
    $message
)

Sin embargo, para asegurarse de que el parámetro acepte solo el tipo de entrada que necesitas, las mejores prácticas dictan que se asigne un tipo de dato al parámetro mediante el uso de un bloque de parámetros [Parameter()] y se encierren el tipo de dato con corchetes [] antes de la variable.

Hello_World.ps1:

 powershellCopyparam(
    [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 dato String.

Parámetros Nombrados en un Script de PowerShell

Una forma de utilizar la función de parámetros en un script es mediante el nombre del parámetro; este método se llama parámetros nombrados. Al llamar a un script o función mediante parámetros nombrados, 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ámetros en este ejemplo. Recuerda que podemos poner una o más variables dentro de la función de parámetros.

Hello_World.ps1:

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

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

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

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

Salida:

 textCopyHello World!
I am happy

Asignar Valores Predeterminados a Parámetros en un 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.

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

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

Salida:

 textCopyHello World!
I am happy

Parámetros Switch en un Script de PowerShell

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:

 powershellCopyparam(
    [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 del script utilizando la sintaxis a continuación.

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

Salida:

 textCopyUser denied confirmation.

Parámetros Obligatorios en un Script de PowerShell

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

Hello_World.ps1:

 powershellCopyparam(
    [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 el script se ejecute y te pedirá un valor.

 powershellCopy.\Hello_World.ps1

Salida:

 textCopycmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message:
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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