Búsqueda de sitios web

Compruebe si existen argumentos en PowerShell [3 formas]


En PowerShell, es esencial comprobar si existen argumentos, especialmente cuando se crean scripts que toman parámetros de entrada. Sin embargo, antes de profundizar en los detalles del desarrollo de un script de PowerShell que acepte argumentos y verifique su presencia, es esencial aprender a crear un archivo de script .ps1 dentro de un directorio.

Debe seguir los siguientes pasos para crear un script de PowerShell (archivo yourFileName.ps1) dentro de un directorio:

  1. Abra un editor de texto como Notepad, Notepad++ o Visual Studio Code. Por ejemplo, estoy usando Bloc de notas.
  2. Escriba su script de PowerShell en el editor de texto.
  3. Guarde el archivo en el directorio que eligió. Por ejemplo, he elegido el directorio E:\Test1.
    Nota: Al guardar el archivo, elija el tipo de archivo Todos los archivos .
  4. Nombra tu archivo con una extensión .ps1.

Ahora que ya sabe cómo crear un archivo de secuencia de comandos de PowerShell, es hora de ampliar aún más su experiencia en PowerShell aprendiendo cómo verificar la existencia de argumentos.

Usando $PSBoundParameters con el bloque Param

Utilice el bloque $PSBoundParameters con Param para comprobar si existen argumentos en PowerShell.

Método $PSBoundParameters:

Param(
    [string]$arg1,
    [string]$arg2
)
if ($PSBoundParameters.ContainsKey('arg1')) {
    Write-Host "The first argument is $($PSBoundParameters['arg1'])"
} else {
    Write-Host "No arguments were passed for arg1"
}
if ($PSBoundParameters.ContainsKey('arg2')) {
    Write-Host "The second argument is $($PSBoundParameters['arg2'])"
} else {
    Write-Host "No arguments were passed for arg2"
}

El código delimitador anterior se guarda como Script2.ps1 en el directorio E:\Test1. Entonces, la ruta completa del archivo es E:\Test1\Script2.ps1.

Ahora, ejecute la siguiente ruta con argumentos en PowerShell:

Ejecute el archivo Script1.ps1:

E:\Test1\Script2.ps1 Hello World

producción :

The first argument is Hello
The second argument is World

La barrera de código anterior es similar al bloque de código anterior, pero utiliza la variable automática $PSBoundParameters que contiene un diccionario de pares clave-valor para la función o bloque de script actual. Cada clave en el diccionario representa el nombre de un parámetro que se pasó a la función o bloque de script, y el valor correspondiente es el argumento que se pasó para ese parámetro.

Después de definir los parámetros, el script verifica si la variable automática $PSBoundParameters contiene una clave denominada arg1 o arg2 usando ContainsKey() Método . Este método devuelve verdadero si la clave existe en el diccionario y falso en caso contrario.

Si el diccionario $PSBoundParameters contiene la clave arg1, el script utiliza interpolación de cadenas ($()) para mostrar el valor de $arg1 en un mensaje de consola. De lo contrario, muestra un mensaje que indica que no se pasaron argumentos para $arg1. De manera similar, funciona para $arg2 y muestra el valor de arg2 en la consola.

Usando if con el bloque Param

Utilice la instrucción if con el bloque Param para comprobar si existen argumentos en PowerShell.

Utilice el método de parámetro:

Param(
    [string]$arg1,
    [string]$arg2
)
if($arg1){
    Write-Host "The first argument is $arg1"
}
else{
    Write-Host "No arguments were passed for arg1"
}
if($arg2){
    Write-Host "The second argument is $arg2"
}
else{
    Write-Host "No arguments were passed for arg2"
}

El código delimitador anterior se guarda como Script1.ps1 en el directorio E:\Test1. Entonces, la ruta completa del archivo es E:\Test1\Script1.ps1.

Ahora, ejecute la siguiente ruta con argumentos en PowerShell:

Ejecute el archivo Script1.ps1:

E:\Test1\Script1.ps1 Hello World

producción :

The first argument is Hello
The second argument is World

En el código anterior, el bloque Param() al comienzo del script define los parámetros y sus tipos como cadenas. Luego, el script verifica si se ha pasado $arg1 como argumento. Si es así, genera un mensaje que indica: El primer argumento es [valor de arg1].

Genera un mensaje que describe No se pasaron argumentos para $arg1 si no se ha pasado. Luego, el script hace lo mismo para $arg2, verifica si se ha pasado y genera el mensaje apropiado. Finalmente, el cmdlet Write-Host envía los mensajes a la consola.

Usando la variable args

Utilice la variable args para comprobar si existen argumentos en PowerShell.

Utilice la variable de argumentos:

if($args.Length -gt 0){
    Write-Host "The argument is: $args"
}
else{
    Write-Host "No arguments were passed"
}

El código delimitador anterior se guarda como Script3.ps1 en el directorio E:\Test1. Entonces, la ruta completa del archivo es E:\Test1\Script3.ps1.

Ahora, ejecute la siguiente ruta con argumentos en PowerShell:

Ejecute el archivo Script3.ps1:

E:\Test1\Script3.ps1 Hello

producción :

The argument is: Hello

El script acepta un argumento en el código anterior y usa la variable automática $args para verificar si se pasó un argumento. Cuando ejecutamos el script con un argumento E:\Test1\Script3.ps1 Hola, el valor del argumento se muestra como Hola. Y, si ejecutamos el archivo Script3.ps1 sin especificar los argumentos, ejecutará el cmdlet Write-Host dentro del bloque else, diciendo No se pasaron argumentos.

El uso de estos tres métodos para verificar si existen argumentos en PowerShell puede ayudar a mejorar la confiabilidad y flexibilidad de sus scripts y funciones, ya sea que elija usar la variable automática $args o la declaración if con Param(). bloque , o $PSBoundParameters con bloque Param dependiendo de las necesidades específicas de su script o función.

Con estos métodos, puede asegurarse de que su script o función pueda manejar diferentes escenarios y proporcionar un resultado preciso en función de la presencia o ausencia de argumentos.

Se trata de cómo comprobar si existe un argumento en PowerShell.

Artículos relacionados