A muchas personas les gusta usar PowerShell porque les permite hacer cosas que no se pueden hacer con la GUI de Windows. Aun así, no se puede negar que algunos cmdlets de PowerShell pueden ser un poco tediosos o complicados. Pero, ¿qué pasaría si hubiera una manera de poder editar estos cmdlets y hacer que "se comporten" como usted desea? Lo creas o no, hay una manera fácil de hacerlo. Puede cambiar el comportamiento del cmdlet modificando los valores de los parámetros predeterminados de PowerShell. Este artículo le mostrará cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento del comando cmdlet.
Advertencia
Antes de comenzar, hay algunas cosas que debes tener en cuenta. Aunque es conveniente cambiar los parámetros predeterminados de PowerShell y el comportamiento de cmdelt, puede generar problemas. Si ejecuta una secuencia de comandos y esa secuencia de comandos supone que el cmdlet modificado se comportará de cierta manera, es posible que obtenga resultados impredecibles. Por lo tanto, debe asegurarse de cambiar cuidadosamente los parámetros predeterminados de PowerShell.
Revisión rápida
Hay dos conceptos de PowerShell con los que debe estar familiarizado para poder trabajar con los parámetros predeterminados. El primer concepto es variable. En PowerShell, los nombres de las variables siempre comienzan con un signo de dólar y puede escribir el contenido de una variable escribiendo el nombre de la variable.
El segundo concepto con el que quizás esté familiarizado es el de la tabla hash. Una tabla hash es esencialmente una lista formada por pares clave/valor. Por ejemplo, supongamos que desea crear una tabla hash que contenga los nombres de los estados de EE. UU. y sus abreviaturas. A continuación se muestra el código:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('Carolina del Sur','SC')
$StateList.add('Georgia','GA')
$StateList
La primera línea de código crea una tabla hash vacía llamada $StateList . Las tres líneas siguientes añaden entradas a la tabla. Cada entrada se compone de una clave (nombre del estado) y un valor (abreviatura del estado). La última línea enumera el contenido de la tabla. Puedes ver el código en acción en la imagen a continuación.
Este es sólo un ejemplo muy simple y hay muchas otras formas de usar tablas hash.
Trabajar con los parámetros predeterminados de PowerShell
PowerShell tiene una variable incorporada que se utiliza para almacenar los parámetros predeterminados utilizados con sus cmdlets. Esta variable se llama $PSDefaultParameterValues . Como habrás notado por la introducción inicial y el nombre de la variable, esta no es una variable ordinaria sino una tabla hash. Sin embargo, si ingresa el nombre de la variable en PowerShell, verá rápidamente que la tabla está vacía, como se muestra a continuación.

Entonces, ¿qué podemos hacer con esta variable $PSDefaultParameterValues ? Como se mencionó anteriormente, puede controlar el comportamiento de los cmdlets de PowerShell. El único punto es que no se pueden superar las capacidades inherentes del comando cmdlet. Así que veamos un ejemplo.
Es posible que este ejemplo no sea algo que desee utilizar en la vida real, pero le mostrará lo fácil que es cambiar radicalmente el comportamiento de los cmdlets. Si ingresa el cmdlet Get-TimeZone en PowerShell, verá el nombre de la zona horaria que su PC está configurada actualmente para usar. Puedes ver este ejemplo en la imagen de abajo.
![Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos]()
Ahora cambiamos este cmdlet para que no muestre la zona horaria que el sistema está configurado para usar, sino las zonas horarias disponibles. Para hacer esto, necesitamos la sintaxis del cmdlet usando el cmdlet Get-Help seguido del cmdlet Get-TimeZone . Puede ver la sintaxis del cmdlet a continuación.
![Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos]()
Esta sintaxis incluye un parámetro llamado ListAvailable . Ingrese el siguiente comando:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
La primera parte de este comando simplemente le dice a PowerShell que desea agregar un valor a la tabla hash, tal como lo hicimos con el ejemplo de abreviatura del estado de EE. UU. en la sección anterior. Esta tabla hash contiene un par clave/valor. En este caso, la clave es el nombre del cmdlet (Get-TimeZone) seguido de una coma y el nombre del parámetro que desea configurar. En este caso, el nombre del parámetro es ListAvailable. La segunda parte de este cmdlet es el valor que desea asignar al parámetro. Aquí está $Verdadero . El parámetro ListAvailable normalmente no necesita un valor, por lo que especificar $True es la forma de indicarle a PowerShell que use este parámetro sin asignarle un valor.
Si observa la imagen a continuación, verá lo que sucede cuando ejecuta el cmdlet Get-TimeZone.
![Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos]()
Cosas a tener en cuenta
Lo más importante que hay que entender es que agregar un nuevo valor para un parámetro predeterminado de PowerShell es cambiar el comportamiento predeterminado del cmdlet, no eliminar las capacidades del cmdlet. Incluso cuando cambia el cmdlet Get-TimeZone para mostrar las zonas horarias disponibles en lugar de mostrar la zona horaria actual. Aún puedes mostrar la información de la zona horaria actual si ves más.
Otra cosa que debes saber es que los parámetros predeterminados personalizados se pueden eliminar. Para eliminar un solo elemento, use el comando $PSDefaultParameterValues.Remove , seguido del nombre del elemento que desea eliminar. Por ejemplo:
$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)
En su lugar, puede eliminar todo el contenido de la tabla hash usando este comando:
$PSDefaultParameterValues.Clear();
Puedes ver ejemplos de ambas técnicas a continuación:
![Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos Cómo utilizar los parámetros predeterminados de PowerShell para cambiar el comportamiento de los comandos]()
Puede eliminar toda la tabla hash o eliminar una sola entrada.
Cambiar el comportamiento predeterminado de un comando cmdlet es algo que no se hace con frecuencia, pero cuando lo necesita, ya sabe cómo cambiarlo.
¡Te deseo éxito!
Ver más: