Más información sobre PowerShell PSDefaultParameterValues
La semana pasada compartí un pequeño detalle sobre cómo hacer la vida de PowerShell más fácil mediante el uso de la variable incorporada, $PSDefaultParameterValues. Esta es una tabla hash especial donde puede definir valores de parámetros predeterminados para cualquier comando de PowerShell. Esto significa cualquier script o función de PowerShell que tenga parámetros definidos Y use [cmdletbinding()]. Si tiene una función simple que solo usa un bloque Param(), $PSDefaultParameterValues no funcionará para esa función. Recomiendo que todas las funciones de PowerShell utilicen [cmdletbinding()] así que, con suerte, esto no será un problema. Dado que recibí algunos comentarios positivos y algunas preguntas sobre la publicación anterior, pensé que sería necesario hacer un seguimiento rápido.
No persistente
Primero, todo lo que ingrese en $PSDefaultParameterValues no es persistente en todas las sesiones de PowerShell. Esto no es más que otro tipo de variable. Como debe saber, las variables solo existen mientras dura su sesión de PowerShell. O para decirlo de manera más técnica, mientras dure el alcance de PowerShell. Si tiene parámetros predeterminados que desea usar todo el tiempo, coloque declaraciones de definición en el script de su perfil de PowerShell. Puede utilizar cualquiera de estas sintaxis.
$PSDefaultParameterValues["get-ciminstance:classname"]="win32_bios"
$PSDefaultParameterValues.Add("get-ciminstance:Verbose",$True)
$PSDefaultParameterValues."Export-Clixml:Encoding" = "UTF8"Exportación e Importación
Otra opción relacionada con el perfil que podría considerar es definir todos los valores predeterminados que desee y luego exportar $PSDefaultParameterValues a un archivo.
$PSDefaultParameterValues | Export-Clixml c:\work\psdefaults.xmlRecomendaría usar Export-Clixml porque captura la mayor cantidad de información y hace que sea muy fácil importarla a una nueva sesión.
Definitivamente no usaría un archivo CSV porque algunos de sus valores predeterminados pueden ser matrices o objetos anidados. JSON podría ser un poco mejor, pero necesitaría reconstruir $PSDefaultParameterValues a partir de él. Y probablemente no maneje valores como SecureStrings o credenciales. En plataformas Windows, Export-Clixml almacenará este tipo de datos de forma fácil y segura. Por supuesto, aún querrás tomar las precauciones adecuadas para proteger el archivo.
Usar y no usar
Los comandos que ejecuté anteriormente establecieron un par de valores de parámetros predeterminados.
No tuve que hacer nada. Siempre puedes especificar otros parámetros o comportamiento.
Como mencioné, $PSDefaultParameterValues es especial. Puede desactivarlo temporalmente agregando una clave Desactivada.
$PSDefaultParameterValues.disabled = $TrueLa variable todavía está definida en mi sesión pero se ignora. Cuando configuro Disabled en $False, los valores predeterminados se usarán nuevamente. También puede borrar completamente la variable.
Le recomiendo encarecidamente que lea el tema de ayuda about_parameters_default_values para obtener aún más información.




