Register-ArgumentCompleter
Rejestruje niestandardowy moduł uzupełniania argumentów.
Składnia
NativeSet
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
PowerShellSet
Register-ArgumentCompleter
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[-CommandName <String[]>]
[<CommonParameters>]
Opis
Polecenie cmdlet Register-ArgumentCompleter rejestruje niestandardowy moduł uzupełniania argumentów. Moduł uzupełniania argumentów umożliwia zapewnienie dynamicznego uzupełniania kart w czasie wykonywania dla dowolnego określonego polecenia.
Wywołając to polecenie za pomocą parametru CommandName i bez parametru ParameterName lub Native parametrów, polecenie jest uruchamiane tak, jakby określono parametr Native. Zapobiega to pracy elementu completer argumentu dla parametrów poleceń programu PowerShell. Zawsze określ parametr ParameterName, gdy chcesz zarejestrować moduł uzupełniania argumentów dla poleceń programu PowerShell.
Przykłady
Przykład 1. Rejestrowanie niestandardowego modułu uzupełniania argumentów
Poniższy przykład rejestruje completer argumentu dla parametru identyfikatora
$s = {
param(
$commandName,
$parameterName,
$wordToComplete,
$commandAst,
$fakeBoundParameters
)
(Get-TimeZone -ListAvailable).Id | Where-Object {
$_ -like "$wordToComplete*"
} | ForEach-Object {
"'$_'"
}
}
Register-ArgumentCompleter -CommandName Set-TimeZone -ParameterName Id -ScriptBlock $s
Pierwsze polecenie tworzy blok skryptu, który przyjmuje wymagane parametry, które są przekazywane, gdy użytkownik naciska Tab. Aby uzyskać więcej informacji, zobacz opis parametru ScriptBlock.
W bloku skryptu dostępne wartości Identyfikator są pobierane przy użyciu polecenia cmdlet Get-TimeZone. Właściwość Id dla każdej strefy czasowej jest potokowana do polecenia cmdlet Where-Object. Polecenie cmdlet Where-Object filtruje wszystkie identyfikatory, które nie zaczynają się od wartości podanej przez $wordToComplete, która reprezentuje tekst wpisany przez użytkownika przed naciśnięciem tab. Filtrowane identyfikatory są przesyłane potokami do polecenia cmdlet ForEach-Object, które otacza każdą wartość w cudzysłowach w celu obsługi wartości zawierających spacje.
Drugie polecenie rejestruje completer argumentów, przekazując skryptblock, Nazwa parametruid i CommandNameSet-TimeZone.
Przykład 2. Dodawanie szczegółów do wartości uzupełniania karty
Poniższy przykład zastępuje uzupełnianie kart dla parametru nazwa
$s = {
param(
$commandName,
$parameterName,
$wordToComplete,
$commandAst,
$fakeBoundParameters
)
$services = Get-Service | Where-Object {
$_.Status -eq 'Running' -and $_.Name -like "$wordToComplete*"
}
$services | ForEach-Object {
New-Object -Type System.Management.Automation.CompletionResult -ArgumentList @(
$_.Name # completionText
$_.Name # listItemText
'ParameterValue' # resultType
$_.Name # toolTip
)
}
}
Register-ArgumentCompleter -CommandName Stop-Service -ParameterName Name -ScriptBlock $s
Pierwsze polecenie tworzy blok skryptu, który przyjmuje wymagane parametry, które są przekazywane, gdy użytkownik naciska Tab. Aby uzyskać więcej informacji, zobacz opis parametru ScriptBlock.
W bloku skryptu pierwsze polecenie pobiera wszystkie uruchomione usługi przy użyciu polecenia cmdlet Where-Object. Usługi są przesyłane potokami do polecenia cmdlet ForEach-Object. Polecenie cmdlet ForEach-Object tworzy nowy obiekt System.Management.Automation.CompletionResult i wypełnia go nazwą bieżącej usługi (reprezentowaną przez zmienną potoku $_.Name).
Obiekt CompletionResult umożliwia podanie dodatkowych szczegółów dla każdej zwróconej wartości:
- completionText (Ciąg) — tekst, który ma być używany jako wynik automatycznego uzupełniania. Jest to wartość wysłana do polecenia .
- listItemText (ciąg) — tekst, który ma być wyświetlany na liście, na przykład gdy użytkownik naciska ctrl+spacji. Program PowerShell używa go tylko do wyświetlania. Po wybraniu polecenia nie jest przekazywany do polecenia.
- resultType (CompletionResultType) — typ wyniku ukończenia.
- toolTip (ciąg) — tekst etykietki narzędzia ze szczegółami wyświetlanymi na temat obiektu. Jest to widoczne, gdy użytkownik wybierze element po naciśnięciu Ctrl+spacji.
Przykład 3. Rejestrowanie niestandardowego modułu uzupełniania argumentów natywnych
Możesz użyć parametru Native, aby zapewnić uzupełnianie tabulacji dla natywnego polecenia. W poniższym przykładzie dodano uzupełnianie tabulacji dla interfejsu wiersza polecenia (CLI) dotnet.
Uwaga / Notatka
Polecenie dotnet complete jest dostępne tylko w wersji 2.0 i nowszej interfejsu wiersza polecenia dotnet.
$scriptblock = {
param(
$wordToComplete,
$commandAst,
$cursorPosition
)
dotnet complete --position $cursorPosition $commandAst.ToString() | ForEach-Object {
[System.Management.Automation.CompletionResult]::new(
$_, # completionText
$_, # listItemText
'ParameterValue', # resultType
$_ # toolTip
)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Pierwsze polecenie tworzy blok skryptu, który przyjmuje wymagane parametry, które są przekazywane, gdy użytkownik naciska Tab. Aby uzyskać więcej informacji, zobacz opis parametru ScriptBlock.
W bloku skryptu polecenie dotnet complete wykonuje uzupełnianie karty. Wyniki są przesyłane potokiem do polecenia cmdlet ForEach-Object, które używa nowej metody statycznejSystem.Management.Automation.CompletionResult, aby utworzyć obiekt CompletionResult dla każdej wartości.
Parametry
-CommandName
Określa nazwę co najmniej jednego polecenia do zarejestrowania modułu uzupełniania argumentów. Ten parametr jest obowiązkowy dla poleceń natywnych.
Po określeniu tego parametru bez parametru ParameterName lub parametrów Native polecenie zachowuje się tak, jakby określono parametr Native. Podczas rejestrowania modułów uzupełniania argumentów dla poleceń programu PowerShell zawsze określ parametr ParameterName.
Jeśli nie określisz tego parametru, program PowerShell zarejestruje moduł uzupełniania argumentów dla określonego nazwa_parametru we wszystkich poleceniach programu PowerShell.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
NativeSet
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
PowerShellSet
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Native
Wskazuje, że argument completer jest przeznaczony dla natywnego polecenia, w którym program PowerShell nie może ukończyć nazw parametrów.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
NativeSet
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ParameterName
Określa nazwę parametru, do których ma zastosowanie completer argumentu. Typ określonych parametrów nie może być wyliczeniem, takim jak ForegroundColor parametr polecenia cmdlet Write-Host.
Aby uzyskać więcej informacji na temat wyliczenia, zobacz about_Enum.
Podczas rejestrowania modułu uzupełniania argumentów dla poleceń programu PowerShell zawsze określ ten parametr. Po określeniu parametru CommandName bez parametru ParameterName lub parametrów Native polecenie zachowuje się tak, jakby określono parametr Native.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
PowerShellSet
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ScriptBlock
Określa polecenia do uruchomienia w celu wykonania ukończenia karty. Podany blok skryptu powinien zwracać wartości, które zakończą wprowadzanie danych wejściowych. Blok skryptu musi wyrejestrować wartości przy użyciu potoku (ForEach-Object, Where-Objectitp.) lub innej odpowiedniej metody. Zwracanie tablicy wartości powoduje, że program PowerShell traktuje całą tablicę jako jedną wartość uzupełniania tabulatora.
Blok skryptu może również zwracać obiekty System.Management.Automation.CompletionResult dla każdej wartości w celu ulepszenia środowiska użytkownika. Zwracanie CompletionResult obiektów umożliwia zdefiniowanie etykietek narzędzi i niestandardowych wpisów listy wyświetlanych, gdy użytkownicy naciskają Ctrl+Spacja, aby wyświetlić listę dostępnych uzupełnień.
Blok skryptu musi zaakceptować następujące parametry w kolejności określonej poniżej. Nazwy parametrów nie są ważne, ponieważ program PowerShell przekazuje wartości według pozycji.
-
$commandName(pozycja 0, ciąg) — ten parametr jest ustawiony na nazwę polecenia, dla którego blok skryptu udostępnia uzupełnianie karty. -
$parameterName(pozycja 1, ciąg) — ten parametr jest ustawiony na parametr, którego wartość wymaga ukończenia karty. -
$wordToComplete(pozycja 2, ciąg) — ten parametr jest ustawiony na wartość podaną przez użytkownika przed naciśnięciem tabulatora. Blok skryptu powinien używać tej wartości do określania wartości uzupełniania tabulacji. -
$commandAst(pozycja 3, CommandAst) — ten parametr jest ustawiony na drzewo składni abstrakcyjnej (AST) dla bieżącego wiersza wejściowego. Aby uzyskać więcej informacji, zobacz CommandAst Class. -
$fakeBoundParameters(pozycja 4 IDictionary) — ten parametr jest ustawiony na tabelę skrótu zawierającą$PSBoundParametersdla polecenia cmdlet, zanim użytkownik nacisnął Tab. Aby uzyskać więcej informacji, zobacz about_Automatic_Variables.
Po określeniu parametru Native blok skryptu musi przyjąć następujące parametry w określonej kolejności. Nazwy parametrów nie są ważne, ponieważ program PowerShell przekazuje wartości według pozycji.
-
$wordToComplete(pozycja 0, ciąg) — ten parametr jest ustawiony na wartość podaną przez użytkownika przed naciśnięciem tabulatora. Blok skryptu powinien używać tej wartości do określania wartości uzupełniania tabulacji. -
$commandAst(Pozycja 1, CommandAst) — ten parametr jest ustawiony na drzewo składni abstrakcyjnej (AST) dla bieżącego wiersza wejściowego. Aby uzyskać więcej informacji, zobacz CommandAst Class. -
$cursorPosition(pozycja 2, Int32) — ten parametr jest ustawiany na położenie kursora, gdy użytkownik naciśnie kartę .
Możesz również podać ArgumentCompleter jako atrybut parametru. Aby uzyskać więcej informacji, zobacz about_Functions_Advanced_Parameters.
Właściwości parametru
| Typ: | ScriptBlock |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
None
Nie można przekazywać obiektów do tego cmdletu.
Dane wyjściowe
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych.