Megosztás a következőn keresztül:


Register-ArgumentCompleter

Egyéni argumentum-befejezőt regisztrál.

Syntax

NativeSet

Register-ArgumentCompleter
    -CommandName <String[]>
    -ScriptBlock <ScriptBlock>
    [-Native]
    [<CommonParameters>]

PowerShellSet

Register-ArgumentCompleter
    -ParameterName <String>
    -ScriptBlock <ScriptBlock>
    [-CommandName <String[]>]
    [<CommonParameters>]

Description

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.

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.

$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 felveszi a szükséges paramétereket, amelyeket a felhasználó a Tab billentyű megnyomásakor ad át. További információért tekintse meg a ScriptBlock paraméter leírását.

A szkriptblokkon belül a azonosító elérhető értékei a Get-TimeZone parancsmaggal lesznek lekérve. 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 a megadott $wordToCompleteé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 parancsmagba kerülnek, amely az egyes értékeket idézőjelek közé zárja, ha az érték szóközöket tartalmaz.

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,
            $_.Name,
            "ParameterValue",
            $_.Name
    }
}
Register-ArgumentCompleter -CommandName Stop-Service -ParameterName Name -ScriptBlock $s

Az első parancs létrehoz egy szkriptblokkot, amely felveszi a szükséges paramétereket, amelyeket a felhasználó a Tab billentyű megnyomásakor ad át. További információért tekintse meg a ScriptBlock paraméter leírását.

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+. 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 CtrlSzóköz+ 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 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($_, $_, 'ParameterValue', $_)
        }
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock

Az első parancs létrehoz egy szkriptblokkot, amely felveszi a szükséges paramétereket, amelyeket a felhasználó a Tab billentyű megnyomásakor ad át. További információért tekintse meg a ScriptBlock paraméter leírását.

A szkriptblokkon belül a dotnet complete parancsot használja a lap befejezéséhez. Az eredményeket a rendszer a ForEach-Object parancsmagba továbbítja, amely a System.Management.Automation.CompletionResult osztály új statikus metódusával hoz létre egy új CompletionResult objektumot az egyes értékekhez.

Paraméterek

-CommandName

Tömbként adja meg a parancsok nevét.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

NativeSet
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
PowerShellSet
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték: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ámogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

NativeSet
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték: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 Write-Host paramétere.

További információ az enumerálásokról: about_Enum.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

PowerShellSet
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték: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, Where-Objectstb.) 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 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 a felhasználó által megadott értékre van beállítva, mielőtt megnyomta Tab. 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ája (AST) értékére van állítva. További információ: Ast Class.
  • $fakeBoundParameters (4. pozíció) – Ez a paraméter a parancsmag $PSBoundParameters tartalmazó kivonatolóra van állítva, mielőtt a felhasználó lenyomta Tab. 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 a felhasználó által a Tab billentyű lenyomása előtt megadott értékre van beállítva. A szkriptblokknak ezt az értéket kell használnia a tabulátor befejezési értékeinek meghatározásához.
  • $commandAst (1. pozíció) – Ez a paraméter az aktuális bemeneti sor absztrakt szintaktikai fájára (AST) van beállítva. További információ: Ast Class.
  • $cursorPosition (2. pozíció) - Ez a paraméter a kurzor pozíciójára van beállítva, amikor a felhasználó megnyomja 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ámogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték: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.

Bevitelek

None

Ehhez a parancsmaghoz nem lehet objektumokat csövezni.

Kimenetek

None

Ez a parancsmag nem ad vissza kimenetet.