Partager via


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

Voir aussi