Powershell, esa maravillosa consola lanzada en 2006 con el objetivo de sustituir al CMD, que prometía facilitar la automatización de tareas y entre una de esas posibilidades esta crear nuestro propio comando.

1 La base del comando

Lo primero que deberemos hacer es escribir las líneas básicas para poner en funcionamiento un comando personalizado, que básicamente es crear una función:
Function Create-Command {
     [CmdletBinding()]Param()
}
Una vez que tengamos estas líneas escritas podremos guardar el archivo con la extensión .ps1 y ejecutar el archivo en una consola de Powershell y podemos ver los siguiente:
Como podemos ver, el comando tiene las opciones básicas de cada comando, ahora mas adelante tendremos que personalizarlo.

2 Función del comando

Vamos a añadirle la función al comando, que para este ejemplo lo añadiremos un simple “Write-Host”:
Function Create-Command {
     [CmdletBinding()]Param()
     Write-Host "Hola mundo"
}
Ahora si guardamos, ejecutamos el archivo en una consola y después ejecutamos el comando, nos dará como resultado el contendido de Write-Host:
Como podemos ver, el resultado es bastante simple, pero tampoco es que le hayamos dado al comando una funcionalidad muy compleja.

3 Parámetros del comando

Vamos a pasar a darle el primer parámetro a nuestro comando, ¿y cmo hacemos eso?, simple, creando una variable, bueno y añadiendo un par de líneas más de código:
Function Create-Command {
     [CmdletBinding()]
        Param(
            [string]$Empresa
        )
        Write-Host "Mi empres es $Empresa"
}
Esta variable la meteremos dentro de “Param()” y será de tipo “string“. Guardaremos y haremos lo de siempre, ejecutar el archivo y pasar a ejecutar el comando, pero esta vez le podemos añadir el parámetro:
Este parámetro que hemos añadido es un parámetro opcional, pero podemos forzar el que tengamos que rellenarlo para que el comando funcione, y para eso tenemos que añadir la linea “[Parameter(Mandatory=$True)]“:
Function Create-Command {
     [CmdletBinding()]
        Param(
            [Parameter(Mandatory=$True)]
            [string]$Empresa
        )
        Write-Host "Mi empres es $Empresa"
}
A partir de este momento, nos obligara a rellenar el parámetro, en caso de insistir en dejarlo vació, el comando dará error.

4 Valores de parámetros validos

A veces los parámetros de los comandos algunos valores ya predefinidos y que son los únicos validos para ese parámetro. Para añadir los nuestros propios, tenemos que añadir la línea [ValidateSet(‘Valor1′,’Valor2’,…)]:
Function Create-Command {
     [CmdletBinding()]
        Param(
            [Parameter(Mandatory=$True)]
            [ValidateSet('itcloud.es','mejor')]
            [string]$Empresa
        )
        Write-Host "Mi empres es $Empresa"
}
Ahora pasaremos a ejecutar el comando, y estamos usando el ISE, podremos ver mientras lo escribimos, que cuando ponemos el parámetro y vamos a escribir su valor, no salen las dos opciones que le hemos añadido:
Si tuviéramos un comando con más funcionalidad, podrías por ejemplo indicarle que realizara una parte o otra al elegir uno de estos valores.

5 Valor por defecto

A la vez que podemos establecer valores validos para los parámetros, también podemos añadir valores por defecto para los parámetros. Esta funcionalidad no es compatible con la de obligar ha rellenar un valor de un parametro. Para poner en marcha esta funcionalidad es bastante simple, al igual que hacemos con una variable normal, para darle un contenido, en el comando hacemos lo mismo con un “=” y el contenido:
Function Create-Command {
     [CmdletBinding()]
        Param(
            [Parameter(Mandatory=$True)]
            [ValidateSet('itcloud.es','mejor')]
            [string]$Empresa,

            [string]$Expresion = 'Guay'
        )
        Write-Host "Mi empres es $Empresa, $Expresion"
}
Ejecutamos el comando y si cuando lo lanzamos tiene un parámetro que no rellenamos, se autorellena solo, como podemos en la captura: