Share via


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