Register-ArgumentCompleter
Egyéni argumentum-befejezőt regisztrál.
Syntax
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
Register-ArgumentCompleter
[-CommandName <String[]>]
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[<CommonParameters>]
Description
A Register-ArgumentCompleter
parancsmag regisztrál egy egyéni argumentum-befejezőt. Az argumentumkiegészítő lehetővé teszi a dinamikus lapkiegészítést a megadott parancsok futásidejű futtatásához.
Példák
1. példa: Egyéni argumentum-befejező regisztrálása
Az alábbi példa egy argumentum-befejezőt regisztrál a Set-TimeZone
parancsmag Azonosító paraméteréhez.
$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
Az első parancs létrehoz egy szkriptblokkot, amely a szükséges paramétereket veszi figyelembe, amelyeket a felhasználó a Tab billentyű lenyomásakor ad át. További információ: ScriptBlock paraméter leírása.
A szkriptblokkon belül a rendszer a parancsmaggal kéri le az Get-TimeZone
azonosító rendelkezésre álló értékeit. Az egyes időzónák id tulajdonsága a Where-Object
parancsmagba van állítva. A Where-Object
parancsmag kiszűri azokat az azonosítókat, amelyek nem az általuk $wordToComplete
megadott értékkel kezdődnek, amely a felhasználó által a Tab billentyű lenyomása előtt beírt szöveget jelöli. A szűrt azonosítók a ForEach-Object
parancsmagra vannak állítva, amely az egyes értékeket idézőjelekbe foglalja, ha az érték szóközöket tartalmaz.
A második parancs regisztrálja az argumentum-befejezőt a szkriptblokk, a ParameterName azonosító és a CommandNameSet-TimeZone
átadásával.
2. példa: Részletek hozzáadása a lap kitöltési értékeihez
Az alábbi példa felülírja a parancsmag Név paraméterének lapkimenetét Stop-Service
, és csak futó szolgáltatásokat ad vissza.
$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,
$_.Name,
"ParameterValue",
$_.Name
}
}
Register-ArgumentCompleter -CommandName Stop-Service -ParameterName Name -ScriptBlock $s
Az első parancs létrehoz egy szkriptblokkot, amely a szükséges paramétereket veszi figyelembe, amelyeket a felhasználó a Tab billentyű lenyomásakor ad át. További információ: ScriptBlock paraméter leírása.
A szkriptblokkon belül az első parancs lekéri az összes futó szolgáltatást a Where-Object
parancsmag használatával. A szolgáltatások a parancsmagra ForEach-Object
vannak állítva. A ForEach-Object
parancsmag létrehoz egy új [System.Management.Automation.CompletionResult]
objektumot, és feltölti az aktuális szolgáltatás értékeivel (amelyet a folyamatváltozó $_
jelöl).
A CompletionResult objektum lehetővé teszi az egyes visszaadott értékek további részleteinek megadását:
- completionText (String) – Az automatikus befejezési eredményként használandó szöveg. Ez a parancsnak küldött érték.
- listItemText (String) – A listában megjelenítendő szöveg, például amikor a felhasználó lenyomja a Ctrl Szóköz billentyűkombinációt+. Ez csak megjelenítésre használható, és nincs átadva a parancsnak, ha ki van választva.
- resultType (CompletionResultType) – A befejezési eredmény típusa.
- elemleírás (sztring) – Az elemleírás szövege az objektumról megjelenítendő részletekkel. Ez akkor jelenik meg, ha a felhasználó kijelöl egy elemet a Ctrl Szóköz billentyűkombináció+lenyomása után.
Az utolsó parancs azt mutatja be, hogy a leállított szolgáltatások továbbra is manuálisan továbbíthatók a Stop-Service
parancsmagnak. A tabulátorkizárás az egyetlen érintett szempont.
3. példa: Egyéni natív argumentum-befejező regisztrálása
A natív paraméterrel tabulátorkiegészítést biztosíthat egy natív parancshoz. Az alábbi példa tabulátorkiegészítést ad a dotnet
parancssori felülethez (CLI).
Feljegyzés
A dotnet complete
parancs csak a dotnet cli 2.0-s és újabb verziójában érhető el.
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Az első parancs létrehoz egy szkriptblokkot, amely a szükséges paramétereket veszi figyelembe, amelyeket a felhasználó a Tab billentyű lenyomásakor ad át. További információ: ScriptBlock paraméter leírása.
A szkriptblokkon belül a dotnet complete
parancsot használja a lap befejezésének végrehajtásához.
Az eredmények a ForEach-Object
system.Management.Automation.CompletionResult osztály új statikus metódusát használó parancsmagra vannak állítva, hogy minden értékhez létrehozhasson egy új CompletionResult objektumot.
Paraméterek
-CommandName
Tömbként adja meg a parancsok nevét.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Native
Azt jelzi, hogy az argumentum-befejező egy natív parancshoz tartozik, ahol a PowerShell nem tudja befejezni a paraméterneveket.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParameterName
Annak a paraméternek a nevét adja meg, amelynek argumentuma befejeződött. A megadott paraméternév nem lehet számba vett érték, például a parancsmag ForegroundColor paramétere Write-Host
.
A számokkal kapcsolatos további információkért lásd: about_Enum.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Megadja a tabulátor befejezéséhez futtatandó parancsokat. A megadott szkriptblokknak a bemenetet befejező értékeket kell visszaadnia. A szkriptblokknak fel kell vennie az értékek regisztrációját a folyamat (ForEach-Object
stb Where-Object
.) vagy egy másik megfelelő módszer használatával. Ha értéktömböt ad vissza, a PowerShell a teljes tömböt egyetlen lapkiegészítési értékként kezeli.
A szkriptblokknak az alábbi paramétereket kell elfogadnia az alább megadott sorrendben. A paraméterek neve nem fontos, mert a PowerShell pozíció szerint adja át az értékeket.
$commandName
(0. pozíció) – Ez a paraméter annak a parancsnak a nevére van beállítva, amelyhez a szkriptblokk lapkiegészítést biztosít.$parameterName
(1. pozíció) – Ez a paraméter arra a paraméterre van beállítva, amelynek értéke lapkiegészítést igényel.$wordToComplete
(2. pozíció) – Ez a paraméter úgy van beállítva, hogy a felhasználó a Tab billentyű lenyomása előtt megadott értéket adja meg. A szkriptblokknak ezt az értéket kell használnia a lapkiegészítési értékek meghatározásához.$commandAst
(3. pozíció) – Ez a paraméter az aktuális bemeneti sor absztrakt szintaxisfára (AST) van állítva. További információ: Ast Class.$fakeBoundParameters
(4. pozíció) – Ez a paraméter egy kivonatolóra van állítva, amely tartalmazza a$PSBoundParameters
parancsmagot, mielőtt a felhasználó lenyomta a Tab billentyűt. További információ: about_Automatic_Variables.
A natív paraméter megadásakor a szkriptblokknak a következő paramétereket kell figyelembe vennie a megadott sorrendben. A paraméterek neve nem fontos, mert a PowerShell pozíció szerint adja át az értékeket.
$wordToComplete
(0. pozíció) – Ez a paraméter úgy van beállítva, hogy a felhasználó a Tab billentyű lenyomása előtt megadott értéket adja meg. A szkriptblokknak ezt az értéket kell használnia a lapkiegészítési értékek meghatározásához.$commandAst
(1. pozíció) – Ez a paraméter az aktuális bemeneti sor absztrakt szintaxisfára (AST) van állítva. További információ: Ast Class.$cursorPosition
(2. pozíció) – Ez a paraméter a kurzor pozíciójára van állítva, amikor a felhasználó lenyomta a Tab billentyűt.
Paraméterattribútumként argumentumkiegészítőt is megadhat. További információ: about_Functions_Advanced_Parameters.
Type: | ScriptBlock |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag nem ad vissza kimenetet.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: