about_Parameters_Default_Values
Description courte
Décrit comment définir des valeurs par défaut personnalisées pour les paramètres d’applet de commande et les fonctions avancées.
Description longue
La $PSDefaultParameterValues
variable de préférence vous permet de spécifier des valeurs par défaut personnalisées pour n’importe quelle applet de commande ou fonction avancée. Les applets de commande et les fonctions avancées utilisent la valeur par défaut personnalisée, sauf si vous spécifiez une autre valeur dans la commande.
Les auteurs d’applets de commande et de fonctions avancées définissent des valeurs par défaut standard pour leurs paramètres. En règle générale, les valeurs par défaut standard sont utiles, mais elles peuvent ne pas convenir à tous les environnements.
Cette fonctionnalité est particulièrement utile lorsque vous devez spécifier la même autre valeur de paramètre presque chaque fois que vous utilisez la commande ou lorsqu’une valeur de paramètre particulière est difficile à mémoriser, comme un nom de serveur de messagerie ou un GUID de projet.
Si la valeur par défaut souhaitée varie de manière prévisible, vous pouvez spécifier un bloc de script qui fournit différentes valeurs par défaut pour un paramètre dans différentes conditions.
$PSDefaultParameterValues
a été introduit dans PowerShell 3.0.
Syntax
La $PSDefaultParameterValues
variable est une table de hachage qui valide le format des clés en tant que type d’objet System.Management.Automation.DefaultParameterDictionary. La table de hachage contient des paires Clé/Valeur . Une clé est au format CmdletName:ParameterName
. Une valeur est la valeur DefaultValue ou ScriptBlock affectée à la clé.
La syntaxe de la $PSDefaultParameterValues
variable de préférence 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 .
Pour définir, modifier, ajouter ou supprimer une paire clé/valeur spécifique à partir de $PSDefaultParameterValues
, utilisez les méthodes pour modifier une table de hachage standard. Par exemple, les méthodes Add et Remove . Ces méthodes ne remplacent pas les autres valeurs de la table de hachage.
Il existe une autre syntaxe qui ne remplace pas une table de hachage existante $PSDefaultParameterValues
. Pour ajouter ou modifier une paire Clé/Valeur spécifique, utilisez la syntaxe suivante :
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
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 des valeurs par défaut pour des scripts ou des fonctions simples.
DefaultValue peut être un objet ou un bloc de script. Si la valeur est un bloc de script, PowerShell évalue le bloc de script et utilise le résultat comme valeur de paramètre. Lorsque le paramètre spécifié accepte une valeur de bloc de script, placez la valeur du bloc de script dans un deuxième ensemble d’accolades, telles que :
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Pour plus d’informations, consultez les documents suivants :
Exemples
Comment définir $PSDefaultParameterValues
$PSDefaultParameterValues
étant une variable de préférence, elle existe uniquement dans la session dans laquelle elle est définie. Il n'a aucune valeur par défaut.
Pour définir $PSDefaultParameterValues
, tapez le nom de la variable et une ou plusieurs paires Clé/Valeur . Si vous exécutez une autre $PSDefaultParameterValues
commande, elle remplace la table de hachage existante.
Pour obtenir des exemples sur la façon de modifier les paires Clé/Valeur sans remplacer les valeurs de table de hachage existantes, consultez Comment ajouter des valeurs à $PSDefaultParameterValues ou Comment modifier des valeurs dans $PSDefaultParameterValues.
Pour enregistrer $PSDefaultParameterValues
des sessions ultérieures, ajoutez une $PSDefaultParameterValues
commande à votre profil PowerShell. Pour plus d’informations, consultez about_Profiles.
Définir une valeur par défaut personnalisée
La paire Clé/Valeur définit la Send-MailMessage:SmtpServer
clé sur une valeur par défaut personnalisée de Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Définir les valeurs par défaut pour plusieurs paramètres
Pour définir des valeurs par défaut pour plusieurs paramètres, séparez chaque paire Clé/Valeur par un point-virgule (;
). Les Send-MailMessage:SmtpServer
clés et Get-WinEvent:LogName
sont définies sur des valeurs par défaut personnalisées.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Utiliser des caractères génériques et des paramètres de commutateur
Les noms d’applet de commande et de paramètre peuvent contenir des caractères génériques. Utilisez $True
et $False
pour définir des valeurs pour les paramètres de commutateur, tels que Verbose. Le paramètre détaillé du paramètre commun est défini sur $True
pour toutes les commandes.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Utiliser un tableau pour la valeur par défaut
Si un paramètre peut accepter plusieurs valeurs, un tableau, vous pouvez définir plusieurs valeurs comme valeurs par défaut. La valeur par défaut de la Invoke-Command:ComputerName
clé est définie sur une valeur de tableau Server01 et Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Utiliser un bloc de script
Vous pouvez utiliser un bloc de script pour spécifier différentes valeurs par défaut pour un paramètre dans différentes conditions. PowerShell évalue le bloc de script et utilise le résultat comme valeur de paramètre par défaut.
La Format-Table:AutoSize
clé définit qui bascule le paramètre vers une valeur par défaut True. L’instruction If
contient une condition qui $host.Name
doit être la console PowerShell, ConsoleHost.
$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 un ensemble supplémentaire d’accolades. Lorsque PowerShell évalue le bloc de script externe, le résultat est le bloc de script interne et il est défini comme valeur de paramètre par défaut.
Clé Invoke-Command:ScriptBlock
définie sur une valeur par défaut du journal des événements système , car le bloc de script est placé dans un deuxième ensemble d’accolades. Le résultat du bloc de script est passé à l’applet de Invoke-Command
commande.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Comment obtenir $PSDefaultParameterValues
Les valeurs de la table de hachage s’affichent en entrant $PSDefaultParameterValues
à l’invite PowerShell.
Une $PSDefaultParameterValues
table de hachage est définie avec trois paires Clé/Valeur .
Cette table de hachage est utilisée dans les exemples suivants qui décrivent comment ajouter, modifier et supprimer des valeurs de $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
Pour obtenir la valeur d’une clé spécifique CmdletName:ParameterName
, utilisez la syntaxe suivante :
$PSDefaultParameterValues["CmdletName:ParameterName"]
Par exemple, pour obtenir la valeur de la Send-MailMessage:SmtpServer
clé.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Comment ajouter des valeurs à $PSDefaultParameterValues
Pour ajouter une valeur à $PSDefaultParameterValues
, utilisez la méthode Add . L’ajout d’une valeur n’affecte pas les valeurs existantes de la table de hachage.
Utilisez une virgule (,
) pour séparer la clé de la valeur. La syntaxe suivante montre comment utiliser la méthode Add pour $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
La table de hachage créée dans l’exemple précédent est mise à jour avec une nouvelle paire Clé/Valeur . La méthode Add définit la Get-Process:Name
clé sur la valeur PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
La syntaxe suivante permet d’obtenir le même résultat.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
La $PSDefaultParameterValues
variable affiche la table de hachage mise à jour. La Get-Process:Name
clé a été ajoutée.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Comment supprimer des valeurs de $PSDefaultParameterValues
Pour supprimer une valeur de $PSDefaultParameterValues
, utilisez la méthode Remove des tables de hachage. La suppression d’une valeur n’affecte pas les valeurs existantes de la table de hachage.
La syntaxe suivante montre comment utiliser la méthode Remove sur $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
Dans cet exemple, la table de hachage créée dans l’exemple précédent est mise à jour pour supprimer une paire Clé/Valeur . La méthode Remove supprime la Get-Process:Name
clé.
$PSDefaultParameterValues.Remove("Get-Process:Name")
La $PSDefaultParameterValues
variable affiche la table de hachage mise à jour. La Get-Process:Name
clé a été supprimée.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Comment modifier les valeurs dans $PSDefaultParameterValues
Les modifications apportées à une valeur spécifique n’affectent pas les valeurs de table de hachage existantes. Pour modifier une paire Clé/Valeur spécifique dans $PSDefaultParameterValues
, utilisez la syntaxe suivante :
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Dans cet exemple, la table de hachage créée dans l’exemple précédent est mise à jour pour modifier une paire Clé/Valeur . La commande suivante remplace la clé par Send-MailMessage:SmtpServer
une nouvelle valeur de ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
La $PSDefaultParameterValues
variable affiche la table de hachage mise à jour. La Send-MailMessage:SmtpServer
clé a été remplacée par une nouvelle valeur.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Comment désactiver et réactiver $PSDefaultParameterValues
Vous pouvez désactiver temporairement, puis réactiver $PSDefaultParameterValues
.
La désactivation $PSDefaultParameterValues
est utile si vous exécutez des scripts qui nécessitent des valeurs de paramètres par défaut différentes.
Pour désactiver $PSDefaultParameterValues
, ajoutez une clé de Disabled
avec la valeur True. Les valeurs dans $PSDefaultParameterValues
sont conservées, mais ne sont pas effectives.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
La syntaxe suivante permet d’obtenir le même résultat.
PS> $PSDefaultParameterValues["Disabled"]=$True
La $PSDefaultParameterValues
variable affiche la table de hachage mise à jour avec la valeur de la Disabled
clé.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Pour réactiver $PSDefaultParameterValues
, supprimez la clé Désactivé ou remplacez la valeur de la clé Désactivé par $False
. La valeur précédente de $PSDefaultParameterValues
est à nouveau effective.
PS> $PSDefaultParameterValues.Remove("Disabled")
La syntaxe suivante permet d’obtenir le même résultat.
PS> $PSDefaultParameterValues["Disabled"]=$False
La $PSDefaultParameterValues
variable affiche la table de hachage mise à jour. Lorsque la méthode Remove est utilisée, la Disabled
clé est supprimée de la sortie.
Si l’autre syntaxe a été utilisée pour réactiver $PSDefaultParameterValues
, la Disabled
clé s’affiche sous la forme False.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ