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 $PSDefaultParameterValueshachage 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, $PSDefaultParameterValuesutilisez 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, $PSDefaultParameterValuesutilisez 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é $FalseDé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