about_Parameters_Default_Values
Mis à jour: octobre 2012
S'applique à: Windows PowerShell 3.0
RUBRIQUE
about_Parameters_Default_Values
DESCRIPTION COURTE
Décrit comment définir des valeurs par défaut personnalisées pour les paramètres des applets de commande et fonctions avancées.
DESCRIPTION DÉTAILLÉE
La variable de préférence $PSDefaultParameterValues vous permet de spécifier les valeurs par défaut personnalisées d'une applet de commande ou d'une fonction avancée. Les applets de commande et les fonctions utilisent ces valeurs par défaut personnalisées, sauf si vous spécifiez une autre valeur dans la commande.
Les auteurs d'applets de commande et de fonctions avancées définissent les valeurs par défaut standard des paramètres utilisés. Ces valeurs par défaut standard conviennent dans la plupart des cas, mais il est possible qu'elles ne soient pas appropriées pour tous les environnements.
Cette fonctionnalité est particulièrement utile si vous devez spécifier la même valeur de paramètre de substitution quasiment à chaque utilisation de la commande ou quand une valeur de paramètre spécifique est difficile à mémoriser, comme un nom de serveur de messagerie ou le GUID d'un projet.
Si la valeur par défaut à utiliser varie de manière prévisible, vous pouvez spécifier un bloc de script qui fournit différentes valeurs par défaut d'un paramètre en fonction des conditions.
La variable de préférence $PSDefaultParameterValues a été introduite dans Windows PowerShell 3.0.
SYNTAXE
La syntaxe de la variable de préférence $PSDefaultParameterValues est la suivante :
$PSDefaultParameterValues=@{"<CmdletName>:<ParameterName>"="<DefaultValue>"}
$PSDefaultParameterValues=@{"<CmdletName>:<ParameterName>"={<ScriptBlock>}}
$PSDefaultParameterValues["Disabled"]=$true | $false
Les caractères génériques sont autorisés dans les valeurs CmdletName et ParameterName.
La valeur de $PSDefaultParameterValues est un System.Management.Automation.DefaultParameterDictionary. C'est un type de table de hachage qui valide le format des clés. Entrez une table de hachage où la clé est composée du nom de l'applet de commande et du nom du paramètre séparés par le signe deux-points (:), et où la valeur correspond à la valeur par défaut personnalisée.
Pour définir, modifier, ajouter ou supprimer des entrées dans $PSDefaultParameterValues, utilisez les mêmes méthodes que celles employées pour une table de hachage standard.
La valeur <CmdletName> doit être le nom d'une applet de commande ou le nom d'une fonction avancée qui utilise l'attribut CmdletBinding. Vous ne pouvez pas utiliser $PSDefaultParameterValues pour spécifier les valeurs par défaut des scripts ou des fonctions simples.
La valeur par défaut peut être un objet ou un bloc de script. Si la valeur est un bloc de script, Windows PowerShell évalue le bloc de script et prend le résultat comme valeur du paramètre. Si le paramètre spécifié accepte une valeur de bloc de script, placez la valeur de bloc de script dans une deuxième paire d'accolades, comme ceci : $PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Pour plus d'informations sur les tables de hachage, consultez about_Hash_Tables. Pour plus d'informations sur les blocs de script, consultez about_Script_Blocks. Pour plus d'informations sur les variables de préférence, consultez about_Preference_Variables.
EXEMPLES
La commande suivante définit une valeur par défaut personnalisée pour le paramètre SmtpServer de l'applet de commande Send-MailMessage.
$PSDefaultParameterValues = @{"Send-MailMessage:SmtpServer"="Server01AB234x5"}
Pour définir les valeurs par défaut de plusieurs paramètres, séparez chaque paire Name=Value par un point-virgule (;). La commande suivante ajoute une valeur par défaut personnalisée pour le paramètre LogName de l'applet de commande Get-WinEvent.
$PSDefaultParameterValues = @{"Send-MailMessage:SmtpServer"="Server01AB234x5";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"}
Vous pouvez utiliser des caractères génériques dans le nom de l'applet de commande et du paramètre. La commande suivante définit le paramètre commun Verbose à la valeur $true dans toutes les commandes. Utilisez $true et $false pour définir les valeurs des paramètres booléens, comme Verbose.
$PSDefaultParameterValues = @{"*:Verbose"=$true}
Si un paramètre accepte plusieurs valeurs (un tableau), vous pouvez définir plusieurs valeurs en tant que valeur par défaut. La commande suivante définit la valeur par défaut « Server01 » et « Server02 » pour le paramètre ComputerName de l'applet de commande Invoke-Command.
$PSDefaultParameterValues = @{"Invoke-Command:ComputerName"="Server01","Server02"}
Vous pouvez spécifier un bloc de script qui fournit différentes valeurs par défaut d'un paramètre en fonction des conditions. Windows PowerShell évalue le bloc de script et prend le résultat comme valeur du paramètre.
La commande suivante définit la valeur par défaut $true pour le paramètre Autosize de l'applet de commande Format-Table quand le programme hôte est la console Windows PowerShell.
$PSDefaultParameterValues=@{"Format-Table:AutoSize"={if ($host.Name –eq "ConsoleHost"){$true}}}
Si un paramètre accepte une valeur de bloc de script, placez le bloc de script dans une autre paire d'accolades. Quand Windows PowerShell évalue le bloc de script externe, le résultat est le bloc de script interne, qui est défini comme valeur par défaut du paramètre.
La commande suivante définit la valeur par défaut du paramètre ScriptBlock de l'applet de commande Invoke-Command. Étant donné que le bloc de script est placé dans une deuxième paire d'accolades, il est passé à l'applet de commande Invoke-Command.
$PSDefaultParameterValues=@{"Invoke-Command:ScriptBlock"={{Get-EventLog –Log System}}}
COMMENT DÉFINIR $PSDefaultParameterValues
$PSDefaultParameterValues est une variable de préférence. Elle existe donc uniquement dans la session dans laquelle elle est définie. Elle n'a aucune valeur par défaut.
Pour définir $PSDefaultParameterValues, tapez le nom de la variable et une ou plusieurs paires clé-valeur sur la ligne de commande.
Si vous tapez une autre commande $PSDefaultParameterValues, sa valeur remplace la valeur initiale. La valeur initiale n'est pas conservée.
Pour enregistrer la variable $PSDefaultParameterValues pour les sessions ultérieures, ajoutez une commande $PSDefaultParameterValues à votre profil Windows PowerShell. Pour plus d'informations, consultez about_Providers.
COMMENT OBTENIR $PSDefaultParameterValues
Pour obtenir la valeur de $PSDefaultParameterValues, à l'invite de commandes, tapez : $PSDefaultParameterValues
Par exemple, la première commande définit la valeur de $PSDefaultParameterValues. La deuxième commande obtient la valeur de $PSDefaultParameterValues.
PS C:\> $PSDefaultParameterValues = @{"Send-MailMessage:SmtpServer"="Server01AB234x5";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational";
"Get-*:Verbose"=$true}
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
Pour obtenir la valeur d'une clé <CmdletName:ParameterName>, utilisez la syntaxe de commande suivante :
$PSDefaultParameterValues["<CmdletName:ParameterName>"]
Par exemple :
PS C:\> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server01AB234x5
COMMENT AJOUTER DES VALEURS À $PSDefaultParameterValues
Pour ajouter ou supprimer des valeurs dans $PSDefaultParameterValues, utilisez les mêmes méthodes que celles employées pour une table de hachage standard.
Par exemple, pour ajouter une valeur à $PSDefaultParameterValues sans modifier les valeurs existantes, utilisez la méthode Add des tables de hachage.
La syntaxe de la méthode Add est la suivante :
<HashTable>.Add(Key, Value)
où la clé est « <CmdletName>:<ParameterName> » et la valeur, la valeur du paramètre.
Utilisez la syntaxe de commande suivante pour appeler la méthode Add sur $PSDefaultParameterValues. Veillez à utiliser une virgule (,) pour séparer la clé et la valeur, au lieu du signe égal (=).
$PSDefaultParameterValues.Add("<CmdletName>:<ParameterName>", "<ParameterValue>")
Par exemple, la commande suivante ajoute « PowerShell » comme valeur par défaut du paramètre Name de l'applet de commande Get-Process.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
L'exemple suivant montre l'effet de cette commande.
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
PS C:\> $PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
COMMENT SUPPRIMER DES VALEURS DANS $PSDefaultParameterValues
Pour supprimer une valeur dans $PSDefaultParameterValues, utilisez la méthode Remove des tables de hachage.
La syntaxe de la méthode Remove est la suivante :
<HashTable>.Remove(Key)
Utilisez la syntaxe de commande suivante pour appeler la méthode Remove sur $PSDefaultParameterValues.
$PSDefaultParameterValues.Remove("<CmdletName>:<ParameterName>")
Par exemple, la commande suivante supprime le paramètre Name, et ses valeurs, dans l'applet de commande Get-Process.
$PSDefaultParameterValues.Remove("Get-Process:Name")
L'exemple suivant montre l'effet de cette commande.
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
PS C:\> $PSDefaultParameterValues.Remove("Get-Process:Name")
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
COMMENT MODIFIER DES VALEURS DANS $PSDefaultParameterValues
Pour modifier une valeur dans $PSDefaultParameterValues, utilisez la syntaxe de commande suivante.
$PSDefaultParameterValues["CmdletName:ParameterName"]="<NewValue>"
L'exemple suivant montre l'effet de cette commande.
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Send-MailMessage:SmtpServer Server01AB234x5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
PS C:\> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="Server0000cabx5"
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Send-MailMessage:SmtpServer Server0000cabx5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
COMMENT DÉSACTIVER ET RÉACTIVER $PSDefaultParameterValues
Vous pouvez temporairement désactiver $PSDefaultParameterValues, puis la réactiver. Cette fonctionnalité est particulièrement utile quand vous exécutez des scripts susceptibles d'utiliser différentes valeurs de paramètre par défaut.
Pour désactiver $PSDefaultParameterValues, ajoutez une clé « Disabled » avec la valeur $True.
Par exemple,
$PSDefaultParameterValues.Add("Disabled", $true)
- or -
$PSDefaultParameterValues[Disabled]=$true
Les autres valeurs dans $PSDefaultParameterValues sont conservées, mais elles ne sont pas prises en compte.
PS C:\> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Send-MailMessage:SmtpServer Server0000cabx5
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get*:Verbose True
Pour réactiver $PSDefaultParameterValues, supprimez la clé Disabled ou modifiez la valeur de la clé Disabled à $False.
$PSDefaultParameterValues.Remove("Disabled")
- or -
$PSDefaultParameterValues[Disabled]=$false
La valeur précédente de $PSDefaultParameterValues est réappliquée.
MOTS CLÉS
about_PSDefaultParameterValues
about_Parameters_DefaultValues
about_DefaultValues
VOIR AUSSI
about_Hash_Tables
about_Preference_Variables
about_Profiles
about_Script_Blocks