Register-ArgumentCompleter
Egyéni argumentum-befejezőt regisztrál.
Szintaxis
NativeSet
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
PowerShellSet
Register-ArgumentCompleter
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[-CommandName <String[]>]
[<CommonParameters>]
Leírás
A Register-ArgumentCompleter parancsmag regisztrál egy egyéni argumentum-kiegészítést. Az argumentumkiegészítő lehetővé teszi a dinamikus lapkiegészítést a megadott parancsok futásidejű futtatásához.
Ha a parancsot a CommandName paraméterrel hívja meg, és a ParameterName vagy a natív paraméterek nélkül, a parancs úgy fut, mintha a natív paramétert adta volna meg. Ez megakadályozza, hogy az argumentum-befejező a PowerShell parancsparamétereihez dolgozzon. Mindig adja meg a ParameterName paramétert, ha argumentumkijelölőt szeretne regisztrálni a PowerShell-parancsokhoz.
Példák
1. példa: Egyéni argumentum-befejező regisztrálása
Az alábbi példa a parancsmag Set-TimeZone paraméteréhez regisztrál egy argumentum-befejezőt.
$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
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-TimeZoneazonosítóhoz rendelkezésre álló értékeket. Az Id tulajdonság minden egyes időzóna esetében a Where-Object parancsmagra van állítva. A Where-Object parancsmag kiszűri azokat az azonosítókat, amelyek nem az általuk $wordToCompletemegadott értékkel kezdődnek, ami azt a szöveget jelöli, amelyet a felhasználó a Tab billentyű lenyomása előtt írt be. A szűrt azonosítók a ForEach-Object parancsmagba vannak állítva, amely az egyes értékeket idézőjelekbe foglalja a szóközöket tartalmazó értékek kezeléséhez.
A második parancs regisztrálja az argumentum-befejezőt a szkriptblokk, a ParameterNameazonosí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 Stop-Service paraméterének lapkimenetét, é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 # completionText
$_.Name # listItemText
'ParameterValue' # resultType
$_.Name # toolTip
)
}
}
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 ForEach-Object parancsmagra 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 nevével (amelyet a folyamatváltozó $_.Namejelöl).
A CompletionResult objektum lehetővé teszi az egyes visszaadott értékek további részleteinek megadását:
- completionText (Sztring) – 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 CtrlSzóköz+. A PowerShell ezt csak megjelenítésre használja. A rendszer nem továbbítja 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 CtrlSzóköz+ lenyomása után.
3. példa: Egyéni natív argumentum-befejező regisztrálása
A natív paraméterrel lapkiegészítést biztosíthat egy natív parancshoz. Az alábbi példa tabulátorkiegészítést ad hozzá a dotnet parancssori felülethez (CLI).
Megjegyzé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(
$_, # completionText
$_, # listItemText
'ParameterValue', # resultType
$_ # toolTip
)
}
}
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 parancs végrehajtja a lap befejezését. Az eredmények a ForEach-Object parancsmagra vannak állítva, amely a System.Management.Automation.CompletionResult osztály új statikus metódusával hoz létre egy CompletionResult objektumot minden értékhez.
Paraméterek
-CommandName
Egy vagy több parancs nevét adja meg az argumentum-kiegészítés regisztrálásához. Ez a paraméter natív parancsok esetén kötelező.
Ha ezt a paramétert a ParameterName vagy a natív paraméterek nélkül adja meg, a parancs úgy viselkedik, mintha a natív paramétert adta volna meg. A PowerShell-parancsok argumentum-befejezőinek regisztrálásakor mindig adja meg a ParameterName paramétert.
Ha nem adja meg ezt a paramétert, a PowerShell az összes PowerShell-parancson regisztrálja a megadott ParameterName argumentum-befejezőt.
Paramétertulajdonságok
| Típus: | String[] |
| Alapértelmezett érték: | None |
| Támogató vadkártyák: | False |
| Don't Show: | False |
Paraméterhalmazok
NativeSet
| Pozíció: | Named |
| Kötelező: | True |
| Érték a csővezetékből: | False |
| Érték a csővezetékből az ingatlan név szerint: | False |
| Érték a maradék argumentumokból: | False |
PowerShellSet
| Pozíció: | Named |
| Kötelező: | False |
| Érték a csővezetékből: | False |
| Érték a csővezetékből az ingatlan név szerint: | False |
| Érték a maradék argumentumokból: | False |
-Native
Azt jelzi, hogy az argumentum-befejező egy natív parancshoz tartozik, ahol a PowerShell nem tudja befejezni a paraméterneveket.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogató vadkártyák: | False |
| Don't Show: | False |
Paraméterhalmazok
NativeSet
| Pozíció: | Named |
| Kötelező: | False |
| Érték a csővezetékből: | False |
| Érték a csővezetékből az ingatlan név szerint: | False |
| Érték a maradék argumentumokból: | False |
-ParameterName
Megadja annak a paraméternek a nevét, amelyre az argumentum-befejező vonatkozik. A megadott paraméterek típusa nem lehet számbavétel, például a parancsmag ForegroundColor paramétereWrite-Host.
További információ az enumerálásokról: about_Enum.
A PowerShell-parancsok argumentum-kiegészítésének regisztrálásakor mindig adja meg ezt a paramétert. Ha a CommandName paramétert paraméternév vagy natív paraméterek nélkül adja meg, a parancs úgy viselkedik, mintha a natív paramétert adta volna meg.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogató vadkártyák: | False |
| Don't Show: | False |
Paraméterhalmazok
PowerShellSet
| Pozíció: | Named |
| Kötelező: | True |
| Érték a csővezetékből: | False |
| Érték a csővezetékből az ingatlan név szerint: | False |
| Érték a maradék argumentumokból: | 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 oldania az értékek regisztrációját a folyamat (ForEach-Objectstb 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 egy lapkiegészítési értékként kezeli.
A szkriptblokk a System.Management.Automation.CompletionResult objektumokat is visszaadhatja az egyes értékekhez a felhasználói élmény fokozása érdekében. A CompletionResult objektumok visszaadásával elemleírásokat és egyéni listabejegyzéseket határozhat meg, amikor a felhasználók a CtrlSzóköz+ lenyomva jelenítik meg az elérhető befejezések listáját.
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ó, sztring) – 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ó, sztring) – 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ó, sztring) – Ez a paraméter a Tab billentyű lenyomása előtt megadott értékre van beállítva. A szkriptblokknak ezt az értéket kell használnia a lapkiegészítési értékek meghatározásához. -
$commandAst(3. pozíció, CommandAst) – Ez a paraméter az aktuális bemeneti sor absztrakt szintaxisfára (AST) van állítva. További információt a CommandAst osztályban talál. -
$fakeBoundParameters(Position 4 IDictionary) – Ez a paraméter egy kivonatolóra van állítva, amely tartalmazza a$PSBoundParametersparancsmagot, 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ó, sztring) – Ez a paraméter a Tab billentyű lenyomása előtt megadott értékre van beállítva. A szkriptblokknak ezt az értéket kell használnia a lapkiegészítési értékek meghatározásához. -
$commandAst(1. pozíció, CommandAst) – Ez a paraméter az aktuális bemeneti sor absztrakt szintaxisfára (AST) van állítva. További információt a CommandAst osztályban talál. -
$cursorPosition(2. pozíció, Int32) – 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ő is megadhat. További információkért lásd a about_Functions_Advanced_Parametersrészt.
Paramétertulajdonságok
| Típus: | ScriptBlock |
| Alapértelmezett érték: | None |
| Támogató vadkártyák: | False |
| Don't Show: | False |
Paraméterhalmazok
(All)
| Pozíció: | Named |
| Kötelező: | True |
| Érték a csővezetékből: | False |
| Érték a csővezetékből az ingatlan név szerint: | False |
| Érték a maradék argumentumokból: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bemenetek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag nem ad vissza kimenetet.