Acerca de los valores predeterminados de parámetrosAbout Parameters Default Values

Descripción breveShort description

Describe cómo establecer los valores predeterminados personalizados para los parámetros de cmdlet y las funciones avanzadas.Describes how to set custom default values for cmdlet parameters and advanced functions.

Descripción largaLong description

La $PSDefaultParameterValues variable de preferencia permite especificar valores predeterminados personalizados para cualquier cmdlet o función avanzada.The $PSDefaultParameterValues preference variable lets you specify custom default values for any cmdlet or advanced function. Los cmdlets y las funciones avanzadas usan el valor predeterminado personalizado a menos que especifique otro valor en el comando.Cmdlets and advanced functions use the custom default value unless you specify another value in the command.

Los autores de los cmdlets y las funciones avanzadas establecen valores predeterminados estándar para sus parámetros.The authors of cmdlets and advanced functions set standard default values for their parameters. Normalmente, los valores predeterminados estándar son útiles, pero puede que no sean adecuados para todos los entornos.Typically, the standard default values are useful, but they might not be appropriate for all environments.

Esta característica es especialmente útil cuando se debe especificar el mismo valor de parámetro alternativo prácticamente cada vez que se usa el comando o cuando es difícil recordar un valor de parámetro determinado, como un nombre de servidor de correo electrónico o un GUID del proyecto.This feature is especially useful when you must specify the same alternate parameter value nearly every time you use the command or when a particular parameter value is difficult to remember, such as an email server name or project GUID.

Si el valor predeterminado deseado varía de forma predecible, puede especificar un bloque de script que proporcione valores predeterminados diferentes para un parámetro en diferentes condiciones.If the desired default value varies predictably, you can specify a script block that provides different default values for a parameter under different conditions.

$PSDefaultParameterValues se presentó en PowerShell 3,0.$PSDefaultParameterValues was introduced in PowerShell 3.0.

SintaxisSyntax

La $PSDefaultParameterValues variable es una tabla hash que valida el formato de las claves como un tipo de objeto de System. Management. Automation. DefaultParameterDictionary .The $PSDefaultParameterValues variable is a hash table that validates the format of keys as an object type of System.Management.Automation.DefaultParameterDictionary . La tabla hash contiene pares de clave y valor .The hash table contains Key/Value pairs. Una clave está en el formato CmdletName:ParameterName .A Key is in the format CmdletName:ParameterName. Un valor es los valores DefaultValue o ScriptBlock asignados a la clave.A Value is the DefaultValue or ScriptBlock assigned to the key.

La sintaxis de la $PSDefaultParameterValues variable de preferencia es la siguiente:The syntax of the $PSDefaultParameterValues preference variable is as follows:

$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}

$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }

$PSDefaultParameterValues["Disabled"]=$True | $False

Se permiten caracteres comodín en los valores CmdletName y parameterName .Wildcard characters are permitted in the CmdletName and ParameterName values.

Para establecer, cambiar, agregar o quitar un par clave-valor específico de $PSDefaultParameterValues , use los métodos para editar una tabla hash estándar.To set, change, add, or remove a specific Key/Value pair from $PSDefaultParameterValues, use the methods to edit a standard hash table. Por ejemplo, los métodos Add y Remove .For example, the Add and Remove methods. Estos métodos no sobrescriben otros valores en la tabla hash.These methods don't overwrite other values in the hash table.

Hay otra sintaxis que no sobrescribe una $PSDefaultParameterValues tabla hash existente.There's another syntax that doesn't overwrite an existing $PSDefaultParameterValues hash table. Para agregar o cambiar un par clave-valor específico, use la siguiente sintaxis:To add or change a specific Key/Value pair, use the following syntax:

$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"

CmdletName debe ser el nombre de un cmdlet o el nombre de una función avanzada que use el atributo CmdletBinding .The CmdletName must be the name of a cmdlet or the name of an advanced function that uses the CmdletBinding attribute. No se puede usar $PSDefaultParameterValues para especificar valores predeterminados para scripts o funciones simples.You can't use $PSDefaultParameterValues to specify default values for scripts or simple functions.

DefaultValue puede ser un objeto o un bloque de script.The DefaultValue can be an object or a script block. Si el valor es un bloque de script, PowerShell evalúa el bloque de script y usa el resultado como el valor del parámetro.If the value is a script block, PowerShell evaluates the script block and uses the result as the parameter value. Cuando el parámetro especificado acepte un valor de bloque de script, incluya el valor de bloque de script en un segundo conjunto de llaves, como:When the specified parameter accepts a script block value, enclose the script block value in a second set of braces, such as:

$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }

Para obtener más información, vea los documentos siguientes:For more information, see the following documents:

EjemplosExamples

Cómo establecer $ PSDefaultParameterValuesHow to set $PSDefaultParameterValues

$PSDefaultParameterValues es una variable de preferencia, por lo que solo existe en la sesión en la que se establece.$PSDefaultParameterValues is a preference variable, so it exists only in the session in which it's set. No tiene valor predeterminado.It has no default value.

Para establecer $PSDefaultParameterValues , escriba el nombre de la variable y uno o más pares clave-valor .To set $PSDefaultParameterValues, type the variable name and one or more Key/Value pairs. Si ejecuta otro $PSDefaultParameterValues comando, sobrescribe la tabla hash existente.If you run another $PSDefaultParameterValues command, it overwrites the existing hash table.

Para obtener ejemplos sobre cómo cambiar pares de clave y valor sin sobrescribir valores de tabla hash existentes, vea Cómo agregar valores a $ PSDefaultParameterValues o Cómo cambiar valores en $ PSDefaultParameterValues.For examples about how to change Key/Value pairs without overwriting existing hash table values, see How to add values to $PSDefaultParameterValues or How to change values in $PSDefaultParameterValues.

Para guardar $PSDefaultParameterValues para futuras sesiones, agregue un $PSDefaultParameterValues comando a su perfil de PowerShell.To save $PSDefaultParameterValues for future sessions, add a $PSDefaultParameterValues command to your PowerShell profile. Para obtener más información, vea about_Profiles.For more information, see about_Profiles.

Establecer un valor predeterminado personalizadoSet a custom default value

El par clave-valor establece la Send-MailMessage:SmtpServer clave en un valor predeterminado personalizado de servidor123 hacia usted .The Key/Value pair sets the Send-MailMessage:SmtpServer key to a custom default value of Server123 .

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123"
}

Establecer valores predeterminados para varios parámetrosSet default values for multiple parameters

Para establecer los valores predeterminados para varios parámetros, separe cada par clave-valor con un punto y coma ( ; ).To set default values for multiple parameters, separate each Key/Value pair with a semicolon (;). Las Send-MailMessage:SmtpServer Get-WinEvent:LogName claves y se establecen en valores predeterminados personalizados.The Send-MailMessage:SmtpServer and Get-WinEvent:LogName keys are set to custom default values.

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123";
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}

Usar caracteres comodín y parámetros de modificadorUse wildcards and switch parameters

El cmdlet y los nombres de parámetro pueden contener caracteres comodín.The cmdlet and parameter names can contain wildcard characters. Use $True y $False para establecer los valores de los parámetros de modificador, como verbose .Use $True and $False to set values for switch parameters, such as Verbose . El parámetro detallado del parámetro común se establece en $True para todos los comandos.The common parameter's Verbose parameter is set to $True for all commands.

$PSDefaultParameterValues = @{"*:Verbose"=$True}

Usar una matriz para el valor predeterminadoUse an array for the default value

Si un parámetro puede aceptar varios valores, una matriz, puede establecer varios valores como valores predeterminados.If a parameter can accept multiple values, an array, you can set multiple values as the default values. El valor predeterminado de la Invoke-Command:ComputerName clave se establece en un valor de matriz de Server01 y Server02 .The default value of the Invoke-Command:ComputerName key is set to an array value of Server01 and Server02 .

$PSDefaultParameterValues = @{
  "Invoke-Command:ComputerName"="Server01","Server02"
}

Usar un bloque de scriptUse a script block

Puede usar un bloque de script para especificar valores predeterminados diferentes para un parámetro en diferentes condiciones.You can use a script block to specify different default values for a parameter under different conditions. PowerShell evalúa el bloque de script y usa el resultado como valor de parámetro predeterminado.PowerShell evaluates the script block and uses the result as the default parameter value.

La Format-Table:AutoSize clave establece que el parámetro de modificador en un valor predeterminado es true .The Format-Table:AutoSize key sets that switch parameter to a default value of True . La If instrucción contiene una condición que $host.Name debe ser la consola de PowerShell, ConsoleHost .The If statement contains a condition that the $host.Name must be the PowerShell console, ConsoleHost .

$PSDefaultParameterValues=@{
  "Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}

Si un parámetro acepta un valor de bloque de script, incluya el bloque de script en un conjunto de llaves adicional.If a parameter accepts a script block value, enclose the script block in an extra set of braces. Cuando PowerShell evalúa el bloque de script exterior, el resultado es el bloque de script interno y se establece como el valor de parámetro predeterminado.When PowerShell evaluates the outer script block, the result is the inner script block, and that is set as the default parameter value.

La Invoke-Command:ScriptBlock clave establecida en un valor predeterminado del registro de eventos del sistema porque el bloque de script está incluido en un segundo conjunto de llaves.The Invoke-Command:ScriptBlock key set to a default value of the System event log because the script block is enclosed in a second set of braces. El resultado del bloque de script se pasa al Invoke-Command cmdlet.The result of the script block is passed to the Invoke-Command cmdlet.

$PSDefaultParameterValues=@{
  "Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}

Cómo obtener $ PSDefaultParameterValuesHow to get $PSDefaultParameterValues

Los valores de la tabla hash se muestran escribiendo $PSDefaultParameterValues en el símbolo del sistema de PowerShell.The hash table values are displayed by entering $PSDefaultParameterValues at the PowerShell prompt.

Una $PSDefaultParameterValues tabla hash se establece con tres pares clave-valor .A $PSDefaultParameterValues hash table is set with three Key/Value pairs. Esta tabla hash se usa en los ejemplos siguientes que describen cómo agregar, cambiar y quitar valores de $PSDefaultParameterValues .This hash table is used in the following examples that describe how to add, change, and remove values from $PSDefaultParameterValues.

PS> $PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123"
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
  "Get-*:Verbose"=$True
}

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

Para obtener el valor de una CmdletName:ParameterName clave específica, use la siguiente sintaxis:To get the value of a specific CmdletName:ParameterName key, use the following syntax:

$PSDefaultParameterValues["CmdletName:ParameterName"]

Por ejemplo, para obtener el valor de la Send-MailMessage:SmtpServer clave.For example, to get the value for the Send-MailMessage:SmtpServer key.

PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123

Cómo agregar valores a $ PSDefaultParameterValuesHow to add values to $PSDefaultParameterValues

Para agregar un valor a $PSDefaultParameterValues , use el método Add .To add a value to $PSDefaultParameterValues, use the Add method. Agregar un valor no afecta a los valores existentes de la tabla hash.Adding a value doesn't affect the hash table's existing values.

Use una coma ( , ) para separar la clave del valor .Use a comma (,) to separate the Key from the Value . En la sintaxis siguiente se muestra cómo usar el método Add para $PSDefaultParameterValues .The following syntax shows how to use the Add method for $PSDefaultParameterValues.

PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")

La tabla hash creada en el ejemplo anterior se actualiza con un nuevo par clave-valor .The hash table created in the prior example is updated with a new Key/Value pair. El método Add establece la Get-Process:Name clave en el valor PowerShell .The Add method sets the Get-Process:Name key to the value PowerShell .

$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")

La siguiente sintaxis consigue el mismo resultado.The following syntax accomplishes the same result.

$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"

La $PSDefaultParameterValues variable muestra la tabla hash actualizada.The $PSDefaultParameterValues variable displays the updated hash table. Get-Process:NameSe ha agregado la clave.The Get-Process:Name key was added.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Process:Name               PowerShell
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

Cómo quitar valores de $ PSDefaultParameterValuesHow to remove values from $PSDefaultParameterValues

Para quitar un valor de $PSDefaultParameterValues , use el método Remove de las tablas hash.To remove a value from $PSDefaultParameterValues, use the Remove method of hash tables. Quitar un valor no afecta a los valores existentes de la tabla hash.Removing a value doesn't affect the hash table's existing values.

En la sintaxis siguiente se muestra cómo usar el método Remove en $PSDefaultParameterValues .The following syntax shows how to use the Remove method on $PSDefaultParameterValues.

PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")

En este ejemplo, la tabla hash creada en el ejemplo anterior se actualiza para quitar un par clave-valor .In this example, the hash table created in the prior example is updated to remove a Key/Value pair. El método Remove quita la Get-Process:Name clave.The Remove method removes the Get-Process:Name key.

$PSDefaultParameterValues.Remove("Get-Process:Name")

La $PSDefaultParameterValues variable muestra la tabla hash actualizada.The $PSDefaultParameterValues variable displays the updated hash table. Get-Process:NameSe quitó la clave.The Get-Process:Name key was removed.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

Cómo cambiar valores en $ PSDefaultParameterValuesHow to change values in $PSDefaultParameterValues

Los cambios en un valor específico no afectan a los valores de tabla hash existentes.Changes to a specific value don't affect existing hash table values. Para cambiar un par clave-valor específico en $PSDefaultParameterValues , utilice la siguiente sintaxis:To change a specific Key/Value pair in $PSDefaultParameterValues, use the following syntax:

PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"

En este ejemplo, la tabla hash creada en el ejemplo anterior se actualiza para cambiar un par clave-valor .In this example, the hash table created in the prior example is updated to change a Key/Value pair. El siguiente comando cambia la Send-MailMessage:SmtpServer clave a un nuevo valor de ServerXYZ .The following command changes the Send-MailMessage:SmtpServer key to a new value of ServerXYZ .

$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"

La $PSDefaultParameterValues variable muestra la tabla hash actualizada.The $PSDefaultParameterValues variable displays the updated hash table. La Send-MailMessage:SmtpServer clave se ha cambiado a un nuevo valor.The Send-MailMessage:SmtpServer key was changed to a new value.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

Cómo deshabilitar y volver a habilitar $ PSDefaultParameterValuesHow to disable and re-enable $PSDefaultParameterValues

Puede deshabilitar y volver a habilitar temporalmente $PSDefaultParameterValues .You can temporarily disable and then re-enable $PSDefaultParameterValues. Deshabilitar $PSDefaultParameterValues es útil si ejecuta scripts que necesitan diferentes valores de parámetro predeterminados.Disabling $PSDefaultParameterValues is useful if you're running scripts that need different default parameter values.

Para deshabilitar $PSDefaultParameterValues , agregue una clave de Disabled con el valor true .To disable $PSDefaultParameterValues, add a key of Disabled with a value of True . Los valores de $PSDefaultParameterValues se conservan, pero no son efectivos.The values in $PSDefaultParameterValues are preserved, but aren't effective.

PS> $PSDefaultParameterValues.Add("Disabled", $True)

La siguiente sintaxis consigue el mismo resultado.The following syntax accomplishes the same result.

PS> $PSDefaultParameterValues["Disabled"]=$True

La $PSDefaultParameterValues variable muestra la tabla hash actualizada con el valor de la Disabled clave.The $PSDefaultParameterValues variable displays the updated hash table with the value for the Disabled key.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       True
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

Para volver a habilitarlo $PSDefaultParameterValues , quite la clave deshabilitada o cambie el valor de la clave deshabilitada a $False .To re-enable $PSDefaultParameterValues, remove the Disabled key or change the value of the Disabled key to $False. El valor anterior de $PSDefaultParameterValues vuelve a ser efectivo.The previous value of $PSDefaultParameterValues is effective again.

PS> $PSDefaultParameterValues.Remove("Disabled")

La siguiente sintaxis consigue el mismo resultado.The following syntax accomplishes the same result.

PS> $PSDefaultParameterValues["Disabled"]=$False

La $PSDefaultParameterValues variable muestra la tabla hash actualizada.The $PSDefaultParameterValues variable displays the updated hash table. Cuando se usa el método Remove , Disabled se quita la clave de la salida.When the Remove method is used, the Disabled key is removed from the output. Si se usó la sintaxis alternativa para volver a habilitarla $PSDefaultParameterValues , la Disabled clave se muestra como false .If the alternate syntax was used to re-enable $PSDefaultParameterValues, the Disabled key is displayed as False .

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       False
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

Consulte tambiénSee also

about_CommonParametersabout_CommonParameters

about_Functions_Advancedabout_Functions_Advanced

about_Functions_CmdletBindingAttributeabout_Functions_CmdletBindingAttribute

about_Hash_Tablesabout_Hash_Tables

about_Preference_Variablesabout_Preference_Variables

about_Profilesabout_Profiles

about_Script_Blocksabout_Script_Blocks