Register-ArgumentCompleter
Inscrit un completer d’argument personnalisé.
Syntaxe
PowerShellSet
Register-ArgumentCompleter
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[-CommandName <String[]>]
[<CommonParameters>]
NativeSet
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
Description
La cmdlet Register-ArgumentCompleter enregistre un compléteur d'argument personnalisé. Un compléteur d'argument vous permet de fournir une complétion de tabulation dynamique, au moment de l'exécution, pour n'importe quelle commande que vous spécifiez.
Exemples
Exemple 1 : Enregistrer un compléteur d’arguments personnalisé
L'exemple suivant enregistre un compléteur d'argument pour le paramètre ID de la cmdlet Set-TimeZone.
$scriptBlock = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
(Get-TimeZone -ListAvailable).Id | Where-Object {
$_ -like "$wordToComplete*"
} | ForEach-Object {
"'$_'"
}
}
Register-ArgumentCompleter -CommandName Set-TimeZone -ParameterName Id -ScriptBlock $scriptBlock
La première commande crée un bloc de script qui accepte les paramètres requis qui sont passés lorsque l’utilisateur appuie sur <TAB>. Pour plus d’informations, consultez la description du paramètre ScriptBlock.
Dans le bloc de script, les valeurs disponibles pour ID sont récupérées à l’aide de l’applet de commande Get-TimeZone. La propriété Id pour chaque fuseau horaire est redirigée vers l’applet de commande Where-Object.
L’applet de commande Where-Object filtre les ID qui ne commencent pas par la valeur fournie par $wordToComplete, qui représente le texte tapé par l’utilisateur avant d’appuyer sur <TAB>. Les ID filtrés sont redirigés vers l’applet de commande For-EachObject qui place chaque valeur entre guillemets, si la valeur contient des espaces.
La deuxième commande inscrit l’argument completer en transmettant le scriptblock, l'ParameterName « Id » et le CommandNameSet-TimeZone.
Exemple 2 : ajouter des détails à vos valeurs de complétion de tabulation
L'exemple suivant remplace la complétion par tabulation pour le paramètre Nom de la cmdlet Stop-Service et ne renvoie que les services en cours d'exécution.
$s = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
$services = Get-Service | Where-Object {$_.Status -eq "Running" }
$services | Where-Object { $_.Name -like "$wordToComplete*" } | ForEach-Object {
New-Object -Type System.Management.Automation.CompletionResult -ArgumentList $_,
$_,
"ParameterValue",
$_
}
}
Register-ArgumentCompleter -CommandName dotnet -Native -ScriptBlock $s
La première commande crée un bloc de script qui accepte les paramètres requis qui sont passés lorsque l’utilisateur appuie sur <TAB>. Pour plus d’informations, consultez la description du paramètre ScriptBlock.
Dans le bloc de script, la première commande récupère tous les services en cours d’exécution à l’aide de l’applet de commande Where-Object. Les services sont redirigés vers l’applet de commande ForEach-Object. L’applet de commande ForEach-Object crée un objet [System.Management.Automation.CompletionResult] et le remplit avec les valeurs du service actuel (représentée par la variable de pipeline $_).
L’objet CompletionResult vous permet de fournir des détails supplémentaires à chaque valeur retournée :
- completionText (Chaîne) - Le texte à utiliser comme résultat de l'auto-complétion. Il s’agit de la valeur envoyée à la commande.
-
listItemText (string) : texte à afficher dans une liste, par exemple lorsque l’utilisateur appuie sur
<Ctrl>+<Space>. Cette option est utilisée uniquement pour l’affichage et n’est pas passée à la commande quand elle est sélectionnée. - resultType (CompletionResultType) - Le type de résultat de l'achèvement.
-
info-bulle (chaîne) : texte de l’info-bulle avec des détails à afficher sur l’objet.
Cela est visible lorsque l’utilisateur sélectionne un élément après avoir appuyé sur
<Ctrl>+<Space>.
La dernière commande montre que les services arrêtés peuvent toujours être transmis manuellement à l’applet de commande Stop-Service. La saisie semi-automatique de tabulation est le seul aspect affecté.
Exemple 3 : Inscrire un compléteur d'arguments natif personnalisé
Vous pouvez utiliser le paramètre Native pour compléter la tabulation d'une commande native. L'exemple suivant ajoute une complétion de tabulation pour l'interface de ligne de commande (CLI) dotnet.
Remarque
La commande dotnet complete est disponible uniquement dans la version 2.0 et supérieure de l’interface cli dotnet.
$scriptblock = {
param($commandName, $wordToComplete, $cursorPosition)
dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
La première commande crée un bloc de script qui accepte les paramètres requis qui sont passés lorsque l’utilisateur appuie sur <TAB>. Pour plus d’informations, consultez la description du paramètre ScriptBlock.
Dans le bloc de script, la commande dotnet complete est utilisée pour effectuer la saisie semi-automatique de tabulation.
Les résultats sont redirigés vers l’applet de commande ForEach-Object qui utilise la méthode statique nouvelle de la classe [System.Management.Automation.CompletionResult] pour créer un objet CompletionResult pour chaque valeur.
Paramètres
-CommandName
Spécifie le nom des commandes sous forme de tableau.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
PowerShellSet
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
NativeSet
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Native
Indique que l’argument completer est destiné à une commande native où PowerShell ne peut pas terminer les noms de paramètres.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
NativeSet
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-ParameterName
Spécifie le nom du paramètre dont l’argument est terminé. Le nom de paramètre spécifié ne peut pas être une valeur énumérée, telle que le paramètre ForegroundColor de l’applet de commande Write-Host.
Pour plus d'informations sur les enums, voir about_Enum.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
PowerShellSet
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-ScriptBlock
Spécifie les commandes à exécuter pour compléter la tabulation. Le bloc de script que vous fournissez doit retourner les valeurs qui terminent l’entrée. Le bloc de script doit dérouler les valeurs à l’aide du pipeline (ForEach-Object, Where-Object, etc.) ou d’une autre méthode appropriée. En renvoyant un tableau de valeurs, PowerShell traite l'ensemble du tableau comme une seule valeur de complétion de tabulation.
Le bloc de script doit également accepter les paramètres suivants dans l’ordre spécifié ci-dessous. Les noms des paramètres ne sont pas importants, car PowerShell passe les valeurs position.
-
$commandName(position 0) : ce paramètre est défini sur le nom de la commande pour laquelle le bloc de script fournit la saisie semi-automatique de tabulation. -
$parameterName(position 1) : ce paramètre est défini sur le paramètre dont la valeur nécessite la saisie semi-automatique de tabulation. -
$wordToComplete(position 2) : ce paramètre est défini sur la valeur fournie par l’utilisateur avant d’appuyer sur<TAB>. Votre bloc de script doit utiliser cette valeur pour déterminer les valeurs d’achèvement de tabulation. -
$commandAst(position 3) : ce paramètre est défini sur l’arborescence de syntaxe abstraite (AST) de la ligne d’entrée actuelle. Pour plus d’informations, consultez classe Ast. -
$fakeBoundParameter(position 4) : ce paramètre est défini sur une table de hachage contenant l'$PSBoundParametersde l’applet de commande, avant que l’utilisateur n’appuie sur<TAB>. Pour plus d’informations, consultez à propos des variables automatiques.
Lorsque vous spécifiez le paramètre native, le bloc de script doit prendre les paramètres suivants dans l’ordre spécifié. Les noms des paramètres ne sont pas importants, car PowerShell passe les valeurs position.
-
$commandName(position 0) : ce paramètre est défini sur le nom de la commande pour laquelle le bloc de script fournit la saisie semi-automatique de tabulation. -
$wordToComplete(position 1) : ce paramètre est défini sur la valeur fournie par l’utilisateur avant d’appuyer sur<TAB>. Votre bloc de script doit utiliser cette valeur pour déterminer les valeurs d’achèvement de tabulation. -
$cursorPosition(position 2) : ce paramètre est défini sur la position du curseur lorsque l’utilisateur a appuyé sur<TAB>.
Vous pouvez également fournir un ArgumentCompleter en tant qu’attribut de paramètre. Pour plus d’informations, consultez about_Functions_Advanced_Parameters.
Propriétés du paramètre
| Type: | ScriptBlock |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
None
Vous ne pouvez pas diriger les objets vers cette applet de commande.
Sorties
None
Cette applet de commande ne retourne aucune sortie.