• 10/27/2020
  • 20 minutes to read
    • S
    • s
    • s
    • c
    • g

Short description

Explains how to add parameters to advanced functions.,

description longue

Vous pouvez ajouter des paramètres aux fonctions avancées que vous écrivez, et utiliser les attributs et arguments deparameter pour limiter les valeurs de paramètres que les utilisateurs de fonctions soumettent avec le paramètre.

Les paramètres que vous ajoutez à votre fonction sont disponibles pour les utilisateurs en plus des paramètres communs que PowerShell ajoute automatiquement à toutes les applets de commande et fonctions avancées. Pour plus d’informations sur les paramètres communs PowerShell, consultez about_CommonParameters.

à partir de PowerShell 3.,0, Vous pouvez utiliser splatting avec @Args pour représenter les paramètres dans une commande. Splatting est valable sur simple et avancéefonctions. Pour plus d’informations, voir about_Functions etabout_splatting.

conversion de type de valeurs de paramètre

lorsque vous fournissez des chaînes en tant qu’arguments à des paramètres qui attendent un differenttype, PowerShell convertit implicitement les chaînes en type cible de paramètre.Les fonctions avancées effectuent une analyse invariante des valeurs des paramètres.

en revanche, une conversion sensible à la culture est effectuée lors de parameterbinding pour les applets de commande compilées.,

dans cet exemple, nous créons une applet de commande et une fonction de script qui prennent un paramètre. La culture actuelle est modifiée pour utiliser les paramètres allemands.Une date au format allemand est transmise au paramètre.

Dienstag, 19. Juni 2018 00:00:00

comme indiqué ci-dessus, les applets de commande utilisent l’analyse sensible à la culture pour convertir la chaîne.

Les fonctions avancées utilisent l’analyse invariante de la culture, ce qui entraîne l’erreur suivante.

paramètres Statiques

paramètres Statiques sont des paramètres qui sont toujours disponibles dans la fonction.,La plupart des paramètres des applets de commande et des scripts PowerShell sont des paramètres statiques.

l’exemple suivant montre la déclaration d’un paramètre ComputerName qui a les caractéristiques suivantes:

  • c’est obligatoire (obligatoire).
  • Il prend l’entrée du pipeline.
  • Il prend un tableau de chaînes en entrée.
Param( ] $ComputerName)

attributs des paramètres

Cette section décrit les attributs que vous pouvez ajouter aux paramètres de fonction.

Tous les attributs sont facultatifs., Cependant, si vous omettez CmdletBindingattribute, alors pour être reconnue comme une fonction avancée, la fonction doit inclure l’attribut de paramètre.

Vous pouvez ajouter une ou plusieurs attributs dans chaque déclaration de paramètre. Il n’y a pas de limite au nombre d’attributs que vous pouvez ajouter à un parameterdeclaration.

Paramètre de l’attribut

L’attribut de Paramètre est utilisé pour déclarer les attributs de functionparameters.

l’attribut de paramètre est facultatif, et vous pouvez l’omettre si aucun des paramètres de vos fonctions n’a besoin d’attributs., Mais, pour être reconnue comme une fonction avancée, plutôt qu’une simple Fonction, une fonction doit avoir l’attribut CmdletBinding ou L’attribut Parameter, ou les deux.

l’attribut de paramètre a des arguments qui définissent les caractéristiques du paramètre, par exemple si le paramètre est obligatoire ou facultatif.

utilisez la syntaxe suivante pour déclarer l’attribut du paramètre, un argument et une valeur d’argument. Les parenthèses qui entourent l’argument et sa valuedoit suivre le paramètre sans espace intermédiaire.,

Param( $ParameterName)

Utilisez des virgules pour séparer les arguments entre parenthèses. Utilisez ce qui suit pour déclarer deux arguments de L’attribut de paramètre.

Param( )

les types d’arguments booléens de L’attribut de paramètre sont par défaut Falsewhen omis de l’attribut de paramètre. Définissez la valeur de l’argument sur $true ou listez simplement l’argument par son nom. Par exemple, les attributs de parameter suivants sont équivalents.,

Si vous utilisez L’attribut Parameter sans arguments, comme alternative à l’utilisation de L’attribut CmdletBinding, les parenthèses qui suivent le nom thetribute sont toujours requises.

Param( $ParameterName)

argument Obligatoire

Le Mandatory argument indique que le paramètre est nécessaire. Si thisargument n’est pas spécifié, le paramètre est facultatif.

L’exemple suivant déclare le paramètre ComputerName. Il utilise l’argumentMandatory pour rendre le paramètre obligatoire.,

Param( ] $ComputerName)

argument de Position

l’argumentPosition détermine si le nom du paramètre est requis lorsque le paramètre est utilisé dans une commande. Lorsqu’une déclaration de paramètre inclut l’argumentPosition, le nom du paramètre peut être omis et Powershellidentifie la valeur du paramètre sans nom par sa position ou son ordre dans la liste des valeurs de paramètre sans nom de la commande.,

Si l’argumentPosition n’est pas spécifié, le nom du paramètre, ou un alias ou une abréviation de parametername, doit précéder la valeur du paramètre chaque fois que theparameter est utilisé dans une commande.

par défaut, tous les paramètres de fonction sont positionnels. PowerShell affecte positionnumbers aux paramètres dans l’ordre dans lequel les paramètres sont déclarés dans la fonction. Pour désactiver cette fonctionnalité, définissez la valeur de l’argument PositionalBindingde L’attribut CmdletBinding sur $False., L’argumentPositiona priorité sur la valeur de l’argumentPositionalBinding de L’attribut CmdletBinding. Pour plus d’informations, consultez PositionalBindingdans about_Functions_CmdletBindingAttribute.

la valeur de l’argument Position est spécifiée comme un entier. Un positionvalue de 0 correspond à la première position dans la commande, une position valueof 1 représente la deuxième position dans la commande, et ainsi de suite.,

Si une fonction n’a pas de paramètres de position, PowerShell attribue des positions àchaque paramètre en fonction de l’ordre dans lequel les paramètres sont déclarés.Cependant, en tant que meilleure pratique, ne vous fiez pas à cette mission. Lorsque vous voulez que les paramètres soient positionnels, utilisez l’argumentPosition.

L’exemple suivant déclare le paramètre ComputerName. Il utilise l’argumentPosition avec une valeur de 0. Par conséquent, lorsque -ComputerName isomitted from command, sa valeur doit être le premier ou le seul parametervalue sans nom de la commande.,

Param( ] $ComputerName)

argument ParameterSetName

l’argument ParameterSetName spécifie le jeu de paramètres auquel aparameter appartient. Si aucun ensemble de paramètres n’est spécifié, le paramètre appartient àtous les ensembles de paramètres définis par la fonction. Par conséquent, pour être unique, chaque ensemble de paramètres doit avoir au moins un paramètre qui n’est membre d’aucun autre ensemble de paramètres.

Remarque

Pour une applet de commande ou de la fonction, il y a une limite de 32 jeux de paramètres.,

l’exemple suivant déclare un paramètre ComputerName dans l’ensemble de paramètresComputer, un paramètre UserName dans l’ensemble de paramètresUser et un paramètre aSummary dans les deux ensembles de paramètres.

Vous pouvez spécifier qu’une seule balise ParameterSetName valeur de chaque argument et un seulParameterSetName argument dans chaque attribut de Paramètre. Pour indiquer qu’aparameter apparaît dans plusieurs ensembles de paramètres, ajoutez Parameterattributes supplémentaires.,

L’exemple suivant ajoute explicitement le Résumé paramètre de la baliseComputer et User jeux de paramètres. Le paramètre résumé est facultatif dans le jeu de paramètres Computer et obligatoire dans le jeu de paramètres User.

pour plus d’informations sur les ensembles de paramètres, Voir À propos des ensembles de paramètres.

argument ValueFromPipeline

l’argumentValueFromPipeline indique que le paramètre accepte inputfrom d’un objet pipeline., Spécifiez cet argument si la fonction accepte l’objet theentire, pas seulement une propriété de l’objet.

l’exemple suivant déclare un paramètre ComputerName qui est mandatoryand accepte un objet qui est passé à la fonction à partir du pipeline.

Param( ] $ComputerName)

ValueFromPipelineByPropertyName argument

Le ValueFromPipelineByPropertyName argument indique que le parameteraccepts entrée d’une propriété d’un objet pipeline. La propriété object doit avoir le même nom ou alias que le paramètre.,

par exemple, si la fonction a un paramètre ComputerName et que pipedobject a une propriété ComputerName, la valeur du ComputerNameproperty est affectée au paramètre ComputerName de la fonction.

l’exemple suivant déclare un paramètre ComputerName qui est mandatoryand accepte l’entrée de la propriété ComputerName de l’objet qui est passée à la fonction via le pipeline.,

Param( ] $ComputerName)

Remarque

Un paramètre typé qui accepte les entrées de pipeline (by Value) ou(by PropertyName) permet d’utiliser de retard-lier des blocs de script sur theparameter.

le bloc de script delay-bind est exécuté automatiquement pendant le parameterbinding. Le résultat est lié au paramètre. Delay bindingne fonctionne pas pour les paramètres définis comme type ScriptBlock ouSystem.Object. Le bloc de script est passé sans être appelé.

Vous pouvez lire sur les blocs de script delay-bind ici about_Script_Blocks.md.,

valuefromremainingarguments argument

l’argumentValueFromRemainingArguments indique que le paramètre accepte toutes les valeurs du paramètre dans la commande qui ne sont pas affectées à d’autres paramètres de la fonction.

l’exemple suivant déclare un paramètre de valeur obligatoire et un paramètre de maintien qui accepte toutes les valeurs de paramètre restantes soumises à la fonction.

Found 2 elements0: one1: two

Remarque

avant PowerShell 6.2, la collection ValueFromRemainingArguments était associée en tant qu’entité unique sous l’index 0.,

argument HelpMessage

l’argumentHelpMessage spécifie une chaîne qui contient une brève description du paramètre ou de sa valeur. PowerShell affiche ce message dans promptthat apparaît lorsqu’une valeur de paramètre obligatoire est manquante dans une commande. Thisargument n’a aucun effet sur les paramètres facultatifs.

l’exemple suivant déclare un paramètre ComputerName obligatoire et un message ahelp qui explique la valeur attendue du paramètre.,

S’il n’y a pas d’autre syntaxe d’aide basée sur les commentaires pour la fonction (par exemple,.SYNOPSIS) alors ce message apparaît également dans la sortieGet-Help.

Param( ] $ComputerName)

attribut Alias

L’attribut Alias établit un autre nom pour le paramètre.Il n’y a pas de limite au nombre d’alias que vous pouvez attribuer à un paramètre.

l’exemple suivant montre une déclaration de paramètre qui ajoute les alias CN etmachinename au paramètre obligatoire ComputerName.,

Param( ] $ComputerName)

attribut SupportsWildcards

L’attribut SupportsWildcards est utilisé pour indiquer que le parameteraccepts valeurs génériques. L’exemple suivant montre une déclaration de paramètrepour un paramètre de chemin obligatoire qui prend en charge les valeurs génériques.

Param( ] $Path)

L’utilisation de cet attribut n’active pas automatiquement la prise en charge des caractères génériques. Le cmdletdeveloper doit implémenter le code pour gérer l’entrée Générique. Les wildcardssupported peuvent varier en fonction de l’API sous-jacente ou du fournisseur PowerShell. Pour plus d’informations, voir about_Wildcards.,

attributs de validation des paramètres et des variables

les attributs de Validation dirigent PowerShell pour tester les valeurs de paramètre que userssubmit lorsqu’ils appellent la fonction avancée. Si les valeurs du paramètre échouent, une erreur est générée et la fonction n’est pas appelée. La validation des paramètresest uniquement appliquée à l’entrée fournie et toutes les autres valeurs telles que les valeurs par défaut ne sont pas validées.

Vous pouvez également utiliser les attributs de validation pour restreindre les valeurs que les utilisateurs peuvent spécifier pour les variables., Lorsque vous utilisez un convertisseur de type long avec avalidation attribut, le convertisseur de type doit être défini avant l’attribut.

 $number = 7

AllowNull de validation de l’attribut

Le AllowNull attribut permet à la valeur d’un paramètre obligatoire pour être$null. L’exemple suivant déclare un paramètre hashtable ComputerInfo qui peut avoir une valeur null.

Param( $ComputerInfo)

Remarque

L’attribut AllowNull ne fonctionne pas si le convertisseur de type est défini tostring car le type string n’acceptera pas de valeur null., Vous pouvez utiliser l’attribut allowemptystring pour ce scénario.

attribut de validation AllowEmptyString

L’attribut AllowEmptyString permet à la valeur d’un paramètre obligatoire d’être une chaîne vide (""). L’exemple suivant déclare un ComputerNameparameter qui peut avoir une valeur de chaîne vide.

Param( $ComputerName)

attribut de validation AllowEmptyCollection

L’attribut AllowEmptyCollection permet à la valeur d’un mandatoryparameter d’être une collection vide@()., L’exemple suivant déclare le paramètre aComputerName qui peut avoir une valeur de collection vide.

Param( ] $ComputerName)

attribut de validation ValidateCount

L’attribut ValidateCount spécifie le nombre minimum et maximum de valeurs de paramètres qu’un paramètre accepte. PowerShell génère une erreur si le nombre de valeurs de paramètre dans la commande qui appelle la fonction est en dehors de cette plage.

la déclaration de paramètre suivante crée un paramètre ComputerName qui prend une à cinq valeurs de paramètre.,

Param( ] $ComputerName)

attribut de validation ValidateLength

L’attribut ValidateLength spécifie le nombre minimum et maximum de caractères dans un paramètre ou une valeur de variable. PowerShell génère une erreur sila longueur d’une valeur spécifiée pour un paramètre ou une variable est en dehors de therange.

dans l’exemple suivant, chaque nom d’ordinateur doit comporter un à dix caractères.

Param( ] $ComputerName)

Dans l’exemple suivant, la valeur de la variable $number doit être une minimumof un caractère de longueur, et d’un maximum de dix caractères.,

$number = '01'

Remarque

Dans cet exemple, la valeur de 01 est enveloppé dans des guillemets simples. L’attribut validatelength n’acceptera pas un nombre sans être encapsulé inquotes.

ValidatePattern validation attribute

L’attribut ValidatePattern spécifie une expression régulière qui est comparée à la valeur du paramètre ou de la variable. PowerShell génère une erreur si la valeur ne correspond pas au modèle d’expression régulière.,

Dans l’exemple suivant, la valeur du paramètre doit contenir un nombre à quatre chiffres,et chaque chiffre doit être un numéro de zéro à neuf.

Param( ")] ] $ComputerName)

Dans l’exemple suivant, la valeur de la variable $number doit être exactement afour chiffres, et chaque chiffre doit être un numéro de zéro à neuf.

$")]$number = 1111

attribut de validation ValidateRange

L’attribut ValidateRange spécifie une plage numérique ou une valeur d’énumération aValidateRangeKind pour chaque paramètre ou valeur de variable.PowerShell génère une erreur si une valeur est en dehors de cette plage.,

L’énumération ValidateRangeKind permet les valeurs suivantes:

  • positif – un nombre supérieur à zéro.
  • Négatif – Un nombre inférieur à zéro.
  • non positif – un nombre inférieur ou égal à zéro.
  • non négatif – Un nombre supérieur ou égal à zéro.

dans l’exemple suivant, la valeur du paramètre Attempts doit êtreentre zéro et dix.

Param( $Attempts)

Dans l’exemple suivant, la valeur de la variable $number doit être betweenzero et dix.,

$number = 5

Dans l’exemple suivant, la valeur de la variable $number doit être greaterthan zéro.

$number = 1

attribut de validation ValidateScript

L’attribut ValidateScript spécifie un script utilisé pour valider un aparamètre ou une valeur de variable. PowerShell envoie la valeur au script et génère une erreur si le script renvoie $false ou si le script génère une exception.,

lorsque vous utilisez L’attribut ValidateScript, la valeur en cours de validation est mappée à la variable$_. Vous pouvez utiliser la variable$_ pour faire référence à la valeur dans le script.

dans l’exemple suivant, la valeur du paramètre EventDate doit être supérieure ou égale à la date actuelle.

Param( $EventDate)

Dans l’exemple suivant, la valeur de la variable $date doit être greaterthan ou égale à la date et l’heure actuelles.,

$date = (Get-Date)

Remarque

Si vous utilisez ValidateScript, vous ne pouvez pas passer un $null la valeur theparameter. Lorsque vous passez une valeur null, ValidateScript ne peut pas valider l’argument.

attribut ValidateSet

L’attribut ValidateSet spécifie un ensemble de valeurs valides pour une variable parameteror et active la complétion de tabulation. PowerShell génère une erreur si aparameter ou variable value ne correspond pas à une valeur de l’ensemble. Dans l’exemple suivant, la valeur du paramètre Detail ne peut être que faible, moyenne ou élevée.,

Param( ] $Detail)

dans l’exemple suivant, la valeur de la variable $flavor doit être soit chocolat, fraise ou vanille.

$flavor = "Strawberry"

la validation se produit chaque fois que cette variable est affectée même dans thescript. Pour exemple, le code suivant génère une erreur à l’exécution:

Param( $Message)$Message = "bye"

Dynamique validateSet valeurs

Vous pouvez utiliser une Classe pour générer dynamiquement les valeurs de ValidateSetat de l’exécution., Dans l’exemple suivant, les valeurs valides pour la variable$Sound sont générées via une classe nommée SoundNames qui vérifie les chemins de threefilesystem pour les fichiers audio disponibles:

la classe est ensuite implémentée en tant que valeur dynamic ValidateSet comme suit:

Param( )] $Sound)

attribut de validation validatenotnull

l’attribut validatenotnull spécifie que la valeur du paramètre ne peut pas être$null. PowerShell génère une erreur si la valeur du paramètre est $null.,

L’attribut ValidateNotNull est conçu pour être utilisé lorsque le paramètre est optionnel et que le type est indéfini ou a un convertisseur de type qui peut convertir implicitement une valeur nulle comme object. Si vous spécifiez un type qui convertira implicitement une valeur null telle qu’une chaîne, la valeur null est convertie en une chaîne vide même lors de l’utilisation de ValidateNotNullattribute. Pour ce scénario, utilisez le ValidateNotNullOrEmpty

dans l’exemple suivant, la valeur du paramètre ID ne peut pas être $null.,

Param( $ID)

attribut de validation ValidateNotNullOrEmpty

L’attribut ValidateNotNullOrEmpty spécifie que le paramètre valuecan ‘ t être $null et ne peut pas être une chaîne vide (""). PowerShell génère une erreur si le paramètre est utilisé dans un appel de fonction, mais sa valeur est $null, une chaîne vide ("") ou un tableau vide @().,

Param( ] $UserName)

attribut de validation ValidateDrive

L’attribut ValidateDrive spécifie que la valeur du paramètre doit représenter le chemin, c’est-à-dire uniquement les lecteurs autorisés. Powershellgenerate une erreur si la valeur du paramètre fait référence à des lecteurs autres que theallowed. L’Existence du chemin, à l’exception du lecteur lui-même, n’est pas vérifiée.

Si vous utilisez un chemin relatif, le lecteur actuel doit figurer dans la liste des lecteurs autorisés.,

Param( $Path)

attribut de validation ValidateUserDrive

L’attribut ValidateUserDrive spécifie que la valeur du paramètre doit représenter le chemin, c’est-à-dire le lecteurUser. PowerShell génère une erreur si le chemin fait référence à un lecteur différent. L’attribut de validation seulementtests pour l’existence de la partie lecteur du chemin.

Si vous utilisez un chemin relatif, le lecteur actuel doit êtreUser.,

Test-UserDrivePath: Cannot validate argument on parameter 'Path'. The pathargument drive C does not belong to the set of approved drives: User.Supply a path argument with an approved drive.
Test-UserDrivePath -Path 'User:\A_folder_that_does_not_exist'
Test-UserDrivePath: Cannot validate argument on parameter 'Path'. Cannotfind drive. A drive with the name 'User' does not exist.

Vous pouvez définir User lecteur Juste Assez d’Administration (JEA) sessionconfigurations. Pour cet exemple, nous créons l’Utilisateur: lecteur.

New-PSDrive -Name 'User' -PSProvider FileSystem -Root $env:HOMEPATH
True

ValidateTrustedData de validation de l’attribut

Cet attribut a été ajouté dans PowerShell 6.1.1.

pour le moment, L’attribut est utilisé en interne par PowerShell lui-même et n’est pas destiné à un usage externe.,

paramètres dynamiques

Les paramètres dynamiques sont des paramètres d’une applet de commande, d’une fonction ou d’un script qui ne sont disponibles que sous certaines conditions.

par exemple, plusieurs applets de commande de fournisseur ont des paramètres qui ne sont disponibles que lorsque l’applet de commande est utilisée dans le lecteur de fournisseur ou dans un chemin particulier du lecteur de fournisseur. Par exemple, le paramètre Encoding est disponible sur les applets de commandeAdd-Content, Get-Content Et Set-Content uniquement lorsqu’il est utilisé dans un lecteur de système de fichiers.,

Vous pouvez également créer un paramètre qui n’apparaît que lorsqu’un autre paramètre est utilisé dans la commande function ou lorsqu’un autre paramètre a une certaine valeur.

Les paramètres dynamiques peuvent être utiles, mais ne les utilisent que lorsque cela est nécessaire, car ils peuvent être difficiles à découvrir pour les utilisateurs. Pour trouver un paramètre dynamique, l’utilisateur doit se trouver dans le chemin du fournisseur, utiliser le paramètre ArgumentList de l’applet de commandeGet-Command ou utiliser le paramètre Path de Get-Help.

Pour créer un paramètre dynamique pour une fonction ou un script, utilisez la balise DynamicParammot clé.,

La syntaxe est comme suit:

DynamicParam {<statement-list>}

Dans la liste, utiliser un If déclaration de préciser les conditions underwhich le paramètre est disponible dans la fonction.

utilisez l’applet de commande New-Object pour créer un système.Gestion.Automatisation.Objet RuntimeDefinedParameter pour représenterle paramètre et spécifier son nom.

Vous pouvez utiliser une commandeNew-Object pour créer un système.Gestion.Automatisation.,Objet ParameterAttribute pour représenter les attributs du paramètre, tels que Mandatory, Position, orValueFromPipeline ou son ensemble de paramètres.

l’exemple suivant montre un exemple de fonction avec les paramètres standard namedName et Path, et un paramètre dynamique facultatif nommé DP1. TheDP1 paramètre est dans lePSet1 ensemble de paramètres et a un type deInt32.,Le paramètre DP1 est disponible dans la fonction Get-Sample uniquement lorsque la valeur du paramètre Path commence par HKLM:, indiquant qu’il est utilisé dans le lecteur de registre HKEY_LOCAL_MACHINE.

pour plus d’informations, voir untimedefinedparameter.

paramètres du commutateur

Les Paramètres du commutateur sont des paramètres sans valeur de paramètre. Ils sont effectiveonly quand ils sont utilisés et n’ont qu’un effet.

Par exemple, le paramètre NoProfile de powershell.exe est un switchparameter.,

pour créer un paramètre de commutateur dans une fonction, spécifiez le type Switch dans la définition du paramètre.

Par exemple:

Param(<ParameterName>)

Ou, vous pouvez utiliser une autre méthode:

Param( $<ParameterName>)

les paramètres de Commutateur sont faciles à utiliser et sont privilégiées sur les paramètres Booléens,qui ont plus de mal à la syntaxe.

par exemple, Pour utiliser un paramètre de commutateur, l’utilisateur tape le paramètre dans thecommand.

-IncludeAll

Pour utiliser un paramètre Booléen, l’utilisateur tape le paramètre et une valeur Booléenne.,

-IncludeAll:$true

Lors de la création de paramètres de commutateur, choisissez le nom du paramètre soigneusement. Soyez sûrs que le nom du paramètre communique l’effet du paramètre à l’utilisateur.Évitez les termes ambigus, tels que filtre ou Maximum qui pourraient impliquer avalue est requis.

attribut ArgumentCompleter

L’attribut ArgumentCompleter vous permet d’ajouter des valeurs de complétion de tabulation à un paramètre spécifique. Un attribut ArgumentCompleter doit être défini pour chaque paramètre nécessitant une complétion de tabulation., Similaire à DynamicParameters, les valeurs disponibles sont calculées lors de l’exécution lorsque l’utilisateur appuie sur Tabafter le nom du paramètre.

pour ajouter un attribut ArgumentCompleter, vous devez définir un bloc de script qui détermine les valeurs. Le bloc de script doit prendre les paramètres suivantsparamètres dans l’ordre spécifié ci-dessous. Les noms du paramètre n’ont pas d’importance Carles valeurs sont fournies positionnellement.,

la syntaxe est la suivante:

bloc de script ArgumentCompleter

Les paramètres du bloc de script sont définis sur les valeurs suivantes:

  • $commandName (Position 0) – ce paramètre est défini sur le nom de la commande pour laquelle le bloc de script fournit
  • $parameterName (Position 1) – ce paramètre est défini sur le paramètre whosevalue nécessite la complétion de tabulation.
  • $wordToComplete (Position 2) – ce paramètre est défini sur la valeur que l’Utilisateur a fournie avant D’appuyer sur Tab., Votre bloc de script doit utiliser cette valeur pour déterminer les valeurs d’achèvement des onglets.
  • $commandAst (Position 3) – ce paramètre est défini sur L’arbre syntaxique abstrait (AST) pour la ligne d’entrée actuelle. Pour plus d’informations, seeAst Classe.
  • $fakeBoundParameters(Position 4) – ce paramètre est défini sur un hashtablecontenant le $PSBoundParameters pour l’applet de commande, avant que l’utilisateur n’appuie sur Tab. Pour plus d’informations, voirabout_automatic_variables.,

Le bloc de script ArgumentCompleter doit dérouler les valeurs à l’aide de thepipeline, telles queForEach-Object,Where-Object, ou une autre méthode appropriée.Le retour d’un tableau de valeurs entraîne PowerShell à traiter le tableau entier comme une valeur d’achèvement d’onglet.

l’exemple suivant ajoute la complétion de tabulation au paramètre Value. Si seulementle paramètre Value est spécifié, toutes les valeurs ou arguments possibles forValue sont affichés. Lorsque le paramètre Type est spécifié, le paramètre value affiche uniquement les valeurs possibles pour ce type.,

de plus, l’opérateur -like garantit que si l’utilisateur tape la commande suivante et utilise la complétion de tabulation, seul Apple est renvoyé.

Test-ArgumentCompleter -Type Fruits -Value A

Voir aussi

about_Automatic_Variables

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_functions_advanced_parameters

about_Functions_OutputTypeAttribute