Partager via


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'$PSBoundParameters de 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.