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 valeur de paramètre alternative presque chaque fois que vous utilisez la commande ou lorsqu’une valeur de paramètre particulière est difficile à mémoriser, par exemple un nom de serveur de messagerie ou un GUID de projet.
Si la valeur par défaut souhaitée varie de façon 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.
Syntaxe
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 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 carte sont autorisés dans les valeurs CmdletName et ParameterName.
Pour définir, modifier, ajouter ou supprimer une paire clé/valeur spécifique, utilisez les méthodes pour modifier une table de $PSDefaultParameterValues
hachage standard. Par exemple, les méthodes Add et Remove . Ces méthodes ne remplacent pas d’autres valeurs dans 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 de bloc de script dans un deuxième ensemble d’accolades, par exemple :
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Pour plus d’informations, consultez les documents suivants :
Exemples
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 . Si vous exécutez une autre $PSDefaultParameterValues
commande, elle remplace la table de hachage existante.
Pour obtenir des exemples sur la modification des 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 clés et Get-WinEvent:LogName
les Send-MailMessage:SmtpServer
clés 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 paramètres génériques carte et switch
Les noms d’applets de commande et de paramètres peuvent contenir des caractères génériques carte. Utilisez $True
et $False
définissez des valeurs pour les paramètres de commutateur, tels que Verbose. Le paramètre Verbose du paramètre commun est défini $True
sur 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 de 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 ce paramètre de basculement sur une valeur par défaut de 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.
La Invoke-Command:ScriptBlock
clé 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 Invoke-Command
de commande.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Comment obtenir $PSDefaultParameterValues
Les valeurs de table de hachage sont affichées 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 effectue 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 $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 des 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, $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 modifie la Send-MailMessage:SmtpServer
clé en 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
.
$PSDefaultParameterValues
La désactivation est utile si vous exécutez des scripts qui ont besoin de valeurs de paramètres par défaut différentes.
Pour désactiver $PSDefaultParameterValues
, ajoutez une clé dont Disabled
la valeur est True. Les valeurs contenues $PSDefaultParameterValues
sont conservées, mais ne sont pas effectives.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
La syntaxe suivante effectue 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ée ou remplacez la valeur de la clé $False
Désactivée par . La valeur précédente est $PSDefaultParameterValues
à nouveau effective.
PS> $PSDefaultParameterValues.Remove("Disabled")
La syntaxe suivante effectue 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 la syntaxe alternative a été utilisée pour réactiver $PSDefaultParameterValues
, la Disabled
clé est affichée sous la forme False.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour