Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Note éditoriale
Important
La spécification du langage Windows PowerShell 3.0 a été publiée en décembre 2012 et est basée sur Windows PowerShell 3.0. Cette spécification ne reflète pas l’état actuel de PowerShell. Il n’existe aucun plan de mise à jour de cette documentation pour refléter l’état actuel. Cette documentation est présentée ici pour référence historique.
Le document de spécification est disponible en tant que document Microsoft Word à partir du Centre de téléchargement Microsoft à l’adresse : https://www.microsoft.com/download/details.aspx?id=36389 ce document Word a été converti pour présentation ici sur Microsoft Learn. Pendant la conversion, certaines modifications éditoriales ont été apportées pour prendre en charge la mise en forme de la plateforme Docs. Certaines fautes de frappe et erreurs mineures ont été corrigées.
Un attribut associe des informations système prédéfinies à un élément cible , qui peut être un bloc de paramètres ou un paramètre (§8.10). Chaque objet d’attribut a un type d’attribut .
Les informations fournies par un attribut sont également appelées métadonnées. Les métadonnées peuvent être examinées par la commande ou l’environnement d’exécution pour contrôler la façon dont la commande traite les données ou avant l’exécution par des outils externes pour contrôler la façon dont la commande elle-même est traitée ou gérée.
Plusieurs attributs peuvent être appliqués au même élément cible.
Spécification d’attribut 12.1
Conseil
La notation ~opt~ dans les définitions de syntaxe indique que l’entité lexicale est facultative dans la syntaxe.
attribute-list:
attribute
attribute-list new-lines~opt~ attribute
attribute:
[ new-lines~opt~ attribute-name ( attribute-arguments new-lines~opt~ ) new-lines~opt~ ]
type-literal
attribute-name:
type-spec
attribute-arguments:
attribute-argument
attribute-argument new-lines~opt~ ,
attribute-arguments
attribute-argument:
new-lines~opt~ expression
new-lines~opt~ simple-name
new-lines~opt~ simple-name = new-lines~opt~ expression
Un attribut se compose d’un nom d’attribut et d’une liste facultative d’arguments positionnels et nommés.
Les arguments positionnels (le cas échéant) précèdent les arguments nommés. Un argument nommé se compose d’un de nom simple, éventuellement suivi d’un signe égal et d’une expression . Si l’expression est omise, la valeur $true est supposée.
Le nom d’attribut est un type d’attribut réservé (§12.3) ou un type d’attribut défini par l’implémentation.
12.2 Instances d’attribut
Une instance d’attribut est un objet d’un type d’attribut. L’instance représente un attribut au moment de l’exécution.
Pour créer un objet de type d’attribut A, utilisez la notation A(). Un attribut est déclaré en englobant son instance dans [], comme dans [A()]. Certains types d’attributs ont des paramètres positionnels et nommés (§8.14), tout comme les fonctions et les applets de commande. Par exemple
[A(10,IgnoreCase=$true)]
affiche la création d'une instance de type à l’aide d’un paramètre positionnel dont la valeur d’argument est 10, et d’un paramètre nommé, IgnoreCase, dont la valeur d’argument est $true.
12.3 Attributs réservés
Les attributs décrits dans les sections suivantes peuvent être utilisés pour augmenter ou modifier le comportement des fonctions, filtres, scripts et applets de commande PowerShell.
12.3.1 L’attribut Alias
Cet attribut est utilisé dans un paramètre de script pour spécifier un autre nom pour un paramètre. Un paramètre peut avoir plusieurs alias, et chaque nom d’alias doit être unique dans une de liste de paramètres. Une utilisation possible consiste à avoir différents noms pour un paramètre dans différents jeux de paramètres (voir ParameterSetName).
L’argument d’attribut est de type chaîne[].
Concevez un appel de fonction Test1 qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[Alias("CN")]
[Alias("Name", "System")]
[string[]] $ComputerName
)
Test1 "Mars", "Saturn" # pass argument by position
Test1 -ComputerName "Mars", "Saturn" # pass argument by name
Test1 -CN "Mars", "Saturn" # pass argument using first alias
Test1 -Name "Mars", "Saturn" # pass argument using second alias
Test1 -Sys "Mars", "Saturn" # pass argument using third alias
Concevez un appel de fonction Test2 qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[Alias('PSPath')]
[string] $LiteralPath
)
Get-ChildItem "E:\*.txt" | Test2 -LiteralPath { $_ ; "`n`t";
$_.FullName + ".bak" }
Get-ChildItem "E:\*.txt" | Test2
L’applet de commande Get-ChildItem (alias dir) ajoute à l’objet qu’elle retourne un nouveau NoteProperty de type string, appelé PSPath.
12.3.2 L’attribut AllowEmptyCollection
Cet attribut est utilisé dans un paramètre de script pour autoriser une collection vide comme argument d’un paramètre obligatoire.
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[AllowEmptyCollection()]
[string[]] $ComputerName
)
Test "Red", "Green" # $ComputerName has Length 2
Test "Red" # $ComputerName has Length 1
Test -Comp @() # $ComputerName has Length 0
12.3.3 L’attribut AllowEmptyString
Cet attribut est utilisé dans un paramètre de script pour autoriser une chaîne vide comme argument d’un paramètre obligatoire.
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[AllowEmptyString()]
[string] $ComputerName
)
Test "Red" # $ComputerName is "Red"
Test "" # empty string is permitted
Test -Comp "" # empty string is permitted
12.3.4 Attribut AllowNull
Cet attribut est utilisé dans un paramètre de script pour autoriser $null comme argument d’un paramètre obligatoire pour lequel aucune conversion implicite n’est disponible.
Considérez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme illustré :
param (
[Parameter(Mandatory = $true)]
[AllowNull()]
[int[]] $Values
)
Test 10, 20, 30 # $values has Length 3, values 10, 20, 30
Test 10, $null, 30 # $values has Length 3, values 10, 0, 30
Test -Val $null # $values has value $null
Notez que le deuxième cas ci-dessus n’a pas besoin de cet attribut ; il existe déjà une conversion implicite de $null en int.
12.3.5 L’attribut CmdletBinding
Cet attribut est utilisé dans la liste d’attributs du param-block d'une fonction pour indiquer que cette fonction agit de manière similaire à un cmdlet. Plus précisément, il permet aux fonctions d’accéder à un certain nombre de méthodes et de propriétés par le biais de la variable $PSCmdlet à l’aide des blocs nommés de début, de processus et de fin (§8.10.7).
Lorsque cet attribut est présent, les arguments positionnels qui n’ont aucun paramètre positionnel correspondant provoquent l’échec de la liaison de paramètre et $args n’est pas défini. (En l’absence de cet attribut, $args prend les valeurs des arguments positionnels sans correspondance.)
Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| SupportsShouldProcess (nommé) | Type : bool ; Valeur par défaut : $false Spécifie si la fonction prend en charge les appels à la méthode ShouldProcess, qui est utilisée pour inviter l’utilisateur à entrer des commentaires avant que la fonction apporte une modification au système. Une valeur de $true indique qu’elle le fait. Une valeur de $false indique qu’elle ne l’est pas. |
| ConfirmImpact (nommé) | Type : chaîne ; Valeur par défaut : « Moyen » Spécifie le niveau d’impact de l’action effectuée. L’appel à la méthode ShouldProcess affiche une invite de confirmation uniquement lorsque l’argument ConfirmImpact est supérieur ou égal à la valeur de la variable de préférence $ConfirmPreference. Les valeurs possibles de cet argument sont les suivantes : Aucun : Supprimez toutes les demandes de confirmation. Faible : l’action effectuée présente un risque faible de perte de données. Moyen : l’action effectuée présente un risque moyen de perte de données. Élevé : l’action effectuée présente un risque élevé de perte de données. La valeur de $ConfirmPreference peut être définie afin que seules les applets de commande ayant un niveau d’impact égal ou supérieur puissent demander la confirmation avant d’effectuer leur opération. Par exemple, si $ConfirmPreference est défini sur Moyen, les applets de commande avec un niveau d’impact moyen ou élevé peuvent demander la confirmation. Les demandes des applets de commande ayant un niveau d’impact faible (Low) sont supprimées. |
| Nom par défaut du jeu de paramètres (nommé) | Type : chaîne ; Valeur par défaut : « __AllParameterSets » Spécifie le jeu de paramètres à utiliser si cela ne peut pas être déterminé à partir des arguments. Consultez l’argument nommé ParameterSetName dans le paramètre d’attribut ([§12.3.7][§12.3.7]). |
| PositionalBinding (nommé) | Type : bool ; Valeur par défaut : $true Spécifie si la liaison positionnelle est prise en charge ou non. La valeur de cet argument est ignorée si des paramètres spécifient des valeurs non par défaut pour l’argument nommé Position ou l’argument nommé ParameterSetName dans le paramètre d’attribut ([§12.3.7][§12.3.7]). Sinon, si l’argument est $false aucun paramètre n’est positionnel, sinon les paramètres sont affectés à une position en fonction de l’ordre spécifié par les paramètres. |
Voici un exemple de framework pour l’utilisation de cet attribut :
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )
begin { ... }
Get-process { ... }
end { ... }
12.3.6 L’attribut OutputType
Cet attribut est utilisé dans la liste d’attributs du bloc de paramètres pour spécifier les types retournés. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| Type (position 0) | Type : string[] ou tableau de littéraux de type Liste des types des valeurs retournées. |
| ParameterSetName (nommé) | Type : string[] Spécifie les jeux de paramètres qui retournent les types indiqués par les éléments correspondants du paramètre Type. |
Voici plusieurs exemples d’utilisation de cet attribut :
[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )
12.3.7 L’attribut paramètre
Cet attribut est utilisé dans un script-parameter. Les arguments nommés suivants sont utilisés pour définir les caractéristiques du paramètre :
| Paramètre | Objectif |
|---|---|
| HelpMessage (nommé) | Type : chaîne Cet argument spécifie un message destiné à contenir une brève description du paramètre. Ce message est utilisé de manière définie par l’implémentation lorsque la fonction ou l’applet de commande est exécutée, mais qu’un paramètre obligatoire ayant un HelpMessage n’a pas d’argument correspondant. L’exemple suivant montre une déclaration de paramètre qui fournit une description du paramètre. param ( [Parameter(Mandatory = $true, Windows PowerShell : si un paramètre requis n’est pas fourni, le runtime invite l’utilisateur à entrer une valeur de paramètre. La boîte de dialogue d’invite inclut le texte HelpMessage. |
| Mandatory (nommé) | Type : bool ; Valeur par défaut : $false Cet argument spécifie si le paramètre est requis dans le jeu de paramètres donné (voir l’argument ParameterSetName ci-dessous). Une valeur de $true indique que c'est le cas. Une valeur de $false indique que ce n'est pas le cas. param ( [Parameter(Mandatory = $true)] Windows PowerShell : si un paramètre requis n’est pas fourni, le runtime invite l’utilisateur à entrer une valeur de paramètre. La boîte de dialogue d’invite inclut le texte HelpMessage, le cas échéant. |
| ParameterSetName (nommé) | Type : chaîne ; Valeur par défaut : « __AllParameterSets » Il est possible d’écrire une seule fonction ou applet de commande qui peut effectuer différentes actions pour différents scénarios. Pour ce faire, il expose différents groupes de paramètres en fonction de l’action qu’il souhaite entreprendre. Ces regroupements de paramètres sont appelés ensembles de paramètres. L’argument ParameterSetName spécifie le jeu de paramètres auquel appartient un paramètre. Ce comportement signifie que chaque jeu de paramètres doit avoir un paramètre unique qui n’est pas membre d’un autre jeu de paramètres. Pour les paramètres appartenant à plusieurs jeux de paramètres, ajoutez un attribut Paramètre pour chaque jeu de paramètres. Cela permet de définir le paramètre différemment pour chaque jeu de paramètres. Un jeu de paramètres qui contient plusieurs paramètres positionnels doit définir des positions uniques pour chaque paramètre. Aucun paramètre positionnel ne peut spécifier la même position. Si aucun jeu de paramètres n’est spécifié pour un paramètre, le paramètre appartient à tous les jeux de paramètres. Lorsque plusieurs jeux de paramètres sont définis, l’argument nommé DefaultParameterSetName de l’attribut CmdletBinding ([§12.3.5][§12.3.5]) est utilisé pour spécifier le jeu de paramètres par défaut. Le runtime utilise le jeu de paramètres par défaut s’il ne peut pas déterminer le jeu de paramètres à utiliser en fonction des informations fournies par la commande ou déclenche une exception si aucun jeu de paramètres par défaut n’a été spécifié. L’exemple suivant montre un test de fonction avec une déclaration de paramètre de deux paramètres qui appartiennent à deux jeux de paramètres différents et un troisième paramètre qui appartient aux deux ensembles : param ( [Parameter(Mandatory = $true, [Parameter(Mandatory = $true, [Parameter(Mandatory = $true, if ($PSCmdlet.ParameterSetName -eq « Computer ») elseif ($PSCmdlet.ParameterSetName -eq « User ») Test -ComputerName « Mars »,"Vénus » -SharedParam 10 |
| Position (nommée) | Type : int Cet argument spécifie la position du paramètre dans la liste d’arguments. Si cet argument n’est pas spécifié, le nom du paramètre ou son alias doit être spécifié explicitement lorsque le paramètre est défini. Si aucun des paramètres d’une fonction n’a de positions, les positions sont affectées à chaque paramètre en fonction de l’ordre dans lequel elles sont reçues. L’exemple suivant montre la déclaration d’un paramètre dont la valeur doit être spécifiée comme premier argument lorsque la fonction est appelée. param ( [Parameter(Position = 0)] |
| ValueFromPipeline (nommé) | Type : bool ; Valeur par défaut : $false Cet argument spécifie si le paramètre accepte l’entrée d’un objet de pipeline. Une valeur de $true indique qu’elle le fait. Une valeur de $false indique qu’elle ne le fait pas. Spécifiez $true si la fonction ou l’applet de commande accède à l’objet complet, pas seulement une propriété de l’objet. Un seul paramètre d’un jeu de paramètres peut déclarer ValueFromPipeline en tant que $true. L’exemple suivant montre la déclaration de paramètre d’un paramètre obligatoire, $ComputerName, qui accepte l’objet d’entrée passé à la fonction à partir du pipeline. param ( [Parameter(Mandatory = $true, Pour obtenir un exemple d’utilisation de ce paramètre conjointement avec l’attribut Alias, consultez [§12.3.1][§12.3.1]. |
| ValueFromPipelineByPropertyName (nommé) | Type : bool ; Valeur par défaut : $false Cet argument spécifie si le paramètre prend sa valeur à partir d’une propriété d’un objet de pipeline qui a le même nom ou le même alias que ce paramètre. Une valeur de $true indique qu’elle le fait. Une valeur de $false indique qu’elle ne le fait pas. Spécifiez $true si les conditions suivantes sont remplies : le paramètre accède à une propriété de l’objet redirigé, et la propriété a le même nom que le paramètre, ou la propriété a le même alias que le paramètre. Un paramètre dont ValueFromPipelineByPropertyName est défini sur $true n'a pas besoin d'avoir un autre paramètre dans le même ensemble avec ValueFromPipeline défini sur $true. Si une fonction a un paramètre $ComputerName et que l’objet redirigé a une propriété ComputerName, la valeur de la propriété ComputerName est affectée au paramètre $ComputerName de la fonction : param ( [Parameter(Mandatory = $true, Plusieurs paramètres d’un jeu de paramètres peuvent définir ValueFromPipelineByPropertyName comme $true. Bien qu’un seul objet d’entrée ne puisse pas être lié à plusieurs paramètres, différentes propriétés de cet objet d’entrée peuvent être liées à différents paramètres. Lors de la liaison d’un paramètre avec une propriété d’un objet d’entrée, l’environnement d’exécution recherche d’abord une propriété portant le même nom que le paramètre. Si une telle propriété n’existe pas, l’environnement d’exécution recherche des alias dans ce paramètre, dans leur ordre de déclaration, en sélectionnant le premier alias pour lequel une propriété existe. fonction Process-Date [Parameter(ValueFromPipelineByPropertyName=$true)] [Parameter(ValueFromPipelineByPropertyName=$true)] processus { ... } |
| ValueFromRemainingArguments (nommé) | Type : bool ; Valeur par défaut : $false Cet argument spécifie si le paramètre accepte tous les arguments restants qui ne sont pas liés aux paramètres de la fonction. Une valeur de $true indique qu’elle le fait. Une valeur de $false indique qu’elle ne le fait pas. L’exemple suivant montre un paramètre $Others qui accepte tous les arguments restants de l’objet d’entrée passé au test de fonction : param ( [Parameter(Mandatory = $true)][int] $p 1, Test 10 20 # $Others a longueur 0 |
Une implémentation peut également définir d’autres attributs.
Les attributs suivants sont également fournis :
- HelpMessageBaseName: spécifie l’emplacement où résident les identificateurs de ressource. Par exemple, ce paramètre peut spécifier un assembly de ressources qui contient des messages d’aide à localiser.
- HelpMessageResourceId: spécifie l’identificateur de ressource d’un message d’aide.
12.3.8 Attribut PSDefaultValue
Cet attribut est utilisé dans un paramètre de script pour fournir des informations supplémentaires sur le paramètre. L’attribut est utilisé de manière définie par l’implémentation. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| Aide (nommée) | Type : chaîne Cet argument spécifie un message destiné à contenir une brève description de la valeur par défaut d’un paramètre. Ce message est utilisé de manière définie par l’implémentation. Windows PowerShell : le message est utilisé dans le cadre de la description du paramètre pour la rubrique d’aide affichée par l’applet de commande [Get-Help](xref :Microsoft.PowerShell.Core.Get-Help). |
| Valeur (nommée) | Type : objet Cet argument spécifie une valeur destinée à être la valeur par défaut d’un paramètre. La valeur est utilisée de manière définie par l’implémentation. Windows PowerShell : La valeur est utilisée dans le cadre de la description du paramètre pour la rubrique d’aide affichée par l’applet de commande [Get-Help](xref :Microsoft.PowerShell.Core.Get-Help)lorsque la propriété d’aide n’est pas spécifiée. |
12.3.9 L’attribut SupportsWildcards
Cet attribut est utilisé dans un paramètre de script pour fournir des informations supplémentaires sur le paramètre. L’attribut est utilisé de manière définie par l’implémentation.
Cet attribut est utilisé dans le cadre de la description du paramètre pour la rubrique d’aide affichée par l’applet de commande Get-Help
12.3.10 L’attribut ValidateCount
Cet attribut est utilisé dans un paramètre de script pour spécifier le nombre minimal et maximal de valeurs d’argument que le paramètre peut accepter. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| LongueurMin (position 0) | Type : int Cet argument spécifie le nombre minimal de valeurs d’argument autorisées. |
| MaxLength (position 1) | Type : int Cet argument spécifie le nombre maximal de valeurs d’argument autorisées. |
En l’absence de cet attribut, la liste de valeurs d’argument correspondante du paramètre peut être de n’importe quelle longueur.
Considérez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme illustré :
param (
[ValidateCount(2, 5)]
[int[]] $Values
)
Temp 10, 20, 30
Temp 10 # too few argument values
Temp 10, 20, 30, 40, 50, 60 # too many argument values
[ValidateCount(3, 4)]$Array = 1..3
$Array = 10 # too few argument values
$Array = 1..100 # too many argument values
12.3.11 Attribut ValidateLength
Cet attribut est utilisé dans un paramètre de script ou variable pour spécifier la longueur minimale et maximale de l’argument du paramètre, qui doit avoir une chaîne de type. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| LongueurMin (position 0) | Type : int Cet argument spécifie le nombre minimal de caractères autorisés. |
| MaxLength (position 1) | Type : int Cet argument spécifie le nombre maximal de caractères autorisés. |
En l’absence de cet attribut, l’argument correspondant du paramètre peut être de n’importe quelle longueur.
Considérez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme illustré :
param ( [Parameter(Mandatory = $true)]
[ValidateLength(3,6)]
[string[]] $ComputerName )
Test "Thor","Mars" # length is ok
Test "Io","Mars" # "Io" is too short
Test "Thor","Jupiter" # "Jupiter" is too long
12.3.12 L’attribut ValidateNotNull
Cet attribut est utilisé dans un paramètre de script ou variable pour spécifier que l’argument du paramètre ne peut pas être $null ou qu’il s’agit d’une collection contenant un élément null.
Considérez un appel de fonction Test qui a le bloc de paramètres suivant, et qui est appelé comme « montré :
param (
[ValidateNotNull()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
[ValidateNotNull()]$Name = "Jack" # ok
$Name = $null # null value not allowed
12.3.13 L’attribut ValidateNotNullOrEmpty
Cet attribut est utilisé dans un script-parameter ou une variable pour indiquer que l'argument ne peut pas être $null, une chaîne vide ou un tableau vide, ni être une collection contenant un élément $null ou une chaîne vide.
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[ValidateNotNullOrEmpty()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Mary", "" # empty string not allowed
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
Test @() # empty array not allowed
[ValidateNotNullOrEmpty()]$Name = "Jack" # ok
$Name = "" # empty string not allowed
$Name = $null # null value not allowed
12.3.14 L’attribut ValidatePattern
Cet attribut est utilisé dans un paramètre de script ou une variable pour spécifier une expression régulière afin de faire correspondre le modèle de l'argument du paramètre. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| RegexString (position 0) | Type : Chaîne Expression régulière utilisée pour valider l’argument du paramètre |
| Options (nommées) | Type : Régulier -Expression-Option Consultez [§4.2.6.4][§4.2.6.4] pour connaître les valeurs autorisées. |
Si l’argument est une collection, chaque élément de la collection doit correspondre au modèle.
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[ValidatePattern('\^[A-Z][1-5][0-9]$')]
[string] $Code,
[ValidatePattern('\^(0x|0X)([A-F]|[a-f]|[0-9])([A-F]|[a-f]|[0-9])$')]
[string] $HexNum,
[ValidatePattern('\^[+|-]?[1-9]$')]
[int] $Minimum
)
Test -C A12 # matches pattern
Test -C A63 # does not match pattern
Test -H 0x4f # matches pattern
Test -H "0XB2" # matches pattern
Test -H 0xK3 # does not match pattern
Test -M -4 # matches pattern
Test -M "+7" # matches pattern
Test -M -12 # matches pattern, but is too long
[ValidatePattern('\^[a-z][a-z0-9]\*$')]$ident = "abc"
$ident = "123" # does not match pattern
12.3.15 L’attribut ValidateRange
Cet attribut est utilisé dans un paramètre de script ou variable pour spécifier les valeurs minimales et maximales de l’argument du paramètre. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| MinRange (position 0) | Type : objet Cet argument spécifie la valeur minimale autorisée. |
| MaxRange (position 1) | Type : objet Cet argument spécifie la valeur maximale autorisée. |
En l’absence de cet attribut, il n’existe aucune restriction de plage.
Concevez un appel de fonction Test1 qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[ValidateRange(1, 10)]
[int] $StartValue
)
Test1 2
Test1 -St 7
Test1 -3 # value is too small
Test1 12 # value is too large
Considérez un appel de fonction Test2 qui a le bloc de paramètres et les appels suivants.
param (
[Parameter(Mandatory = $true)]
[ValidateRange("b", "f")]
[string] $Name
)
Test2 "Bravo" # ok
Test2 "Alpha" # value compares less than the minimum
Test2 "Hotel" # value compares greater than the maximum
Concevez un appel de fonction Test3 qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[ValidateRange(0.002, 0.003)]
[double] $Distance
)
Test3 0.002
Test3 0.0019 # value is too small
Test3 "0.005" # value is too large
[ValidateRange(13, 19)]$teenager = 15
$teenager = 20 # value is too large
12.3.16 Attribut ValidateScript
Cet attribut est utilisé dans un paramètre de script ou une variable pour spécifier un script à utiliser pour valider l'argument de ce paramètre.
L'argument à la position 1 est une expression de bloc de script .
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param (
[Parameter(Mandatory = $true)]
[ValidateScript( { ($_ -ge 1 -and $_ -le 3) -or ($_ -ge 20) })]
[int] $Count
)
Test 2 # ok, valid value
Test 25 # ok, valid value
Test 5 # invalid value
Test 0 # invalid value
[ValidateScript({$_.Length --gt 7})]$password = "password" # ok
$password = "abc123" # invalid value
12.3.17 L’attribut ValidateSet
Cet attribut est utilisé dans un paramètre de script ou une variable pour spécifier un ensemble de valeurs valides pour l’argument du paramètre. Les arguments suivants sont utilisés pour définir les caractéristiques du paramètre :
| nom du paramètre | Objectif |
|---|---|
| ValeursValides (position 0) | Type : string[] Ensemble de valeurs valides. |
| IgnoreCase (nommé) | Type : bool ; Valeur par défaut : $true Spécifie si la casse doit être ignorée pour les paramètres de type string. |
Si le paramètre a un type de tableau, chaque élément du tableau d’arguments correspondant doit correspondre à un élément du jeu de valeurs.
Concevez un appel de fonction Test qui a le bloc de paramètres suivant et qui est appelé comme indiqué :
param ( [ValidateSet("Red", "Green", "Blue")]
[string] $Color,
[ValidateSet("up", "down", "left", "right", IgnoreCase =
$false)]
[string] $Direction
)
Test -Col "RED" # case is ignored, is a member of the set
Test -Col "white" # case is ignored, is not a member of the set
Test -Dir "up" # case is not ignored, is a member of the set
Test -Dir "Up" # case is not ignored, is not a member of the set
[ValidateSet(("Red", "Green", "Blue")]$color = "RED" # ok, case is ignored
$color = "Purple" # case is ignored, is not a member of the set