Aracılığıyla paylaş


TabExpansion2

PowerShell betikleri CompleteInput() için sekme tamamlama sağlamak üzere CommandCompletion sınıfının yöntemini sarmalayan bir yardımcı işlev.

Syntax

TabExpansion2
   [-inputScript] <String>
   [[-cursorColumn] <Int32>]
   [[-options] <Hashtable>]
   [<CommonParameters>]
TabExpansion2
   [-ast] <Ast>
   [-tokens] <Token[]>
   [-positionOfCursor] <IScriptPosition>
   [[-options] <Hashtable>]
   [<CommonParameters>]

Description

TabExpansion2 , kullanıcı girişi için sekme tamamlama sağlayan yerleşik bir işlevdir. Kullanıcı bir komut yazarken Sekme veya Ctrl+Ara Çubuğu tuşuna bastığında PowerShell bu işlevi çağırır. İşlev, geçerli giriş için olası tamamlamaların listesini döndürür.

TabExpansion2 normalde kullanıcılar tarafından doğrudan çağrılmaz. Ancak, sekme tamamlama testi için yararlı olabilir. kullanmak TabExpansion2için geçerli giriş betiğini ve betikteki imleç konumunu sağlamanız gerekir. İşlev, geçerli giriş için olası tamamlamaların listesini içeren bir CommandCompletion nesnesi döndürür. Bu giriş betiği, betiği temsil eden bir dize veya soyut söz dizimi ağacı (AST) olabilir.

PowerShell oturumunuzda aynı ada sahip bir özel işlev tanımlayarak varsayılan davranışını TabExpansion2 geçersiz kılabilirsiniz. Bu özel işlev, özel komutlar veya parametreler için tamamlamalar sağlayabilir. geçersiz kılmak TabExpansion2mümkün olsa da desteklenmez. Yalnızca sekme tamamlama davranışını özelleştirmeniz gerekiyorsa özel bir işlev oluşturmanız gerekir.

Örnekler

Örnek 1 - Komut parametresi için sekme tamamlama alma

Bu örnek, PowerShell komut istemine girerek Format-Hex -<Tab> elde edeceğiniz sonuçların aynısını gösterir. İşlev, TabExpansion2 belirteç için - olası tamamlamaların listesini içeren bir CommandCompletion nesnesi döndürür.

TabExpansion2 -inputScript ($s = 'Format-Hex -') -cursorColumn $s.Length |
    Select-Object -ExpandProperty CompletionMatches

CompletionText ListItemText    ResultType ToolTip
-------------- ------------    ---------- -------
-Path          Path         ParameterName [string[]] Path
-LiteralPath   LiteralPath  ParameterName [string[]] LiteralPath
-InputObject   InputObject  ParameterName [psobject] InputObject
-Encoding      Encoding     ParameterName [Encoding] Encoding
-Count         Count        ParameterName [long] Count
-Offset        Offset       ParameterName [long] Offset

Örnek 2 - Parametre değerleri için sekme tamamlama alma

Bu örnekte, parametre değerleri için sekme tamamlamanın nasıl alınıyor olduğu gösterilmektedir. Bu örnekte Stage parametresinin üç olası değeri olmasını ve değerlerden birinin olması beklenmiştirThree. İşlevinizin beklenen sonuçları döndürdüğü sekme tamamlama işlemini test etmek için bu tekniği kullanabilirsiniz.

function GetData {
    param (
        [ValidateSet('One', 'Two', 'Three')]
        [string]$Stage
    )
    Write-Verbose "Retrieving data for stage $Stage"
}

$result = TabExpansion2 -inputScript ($line = 'GetData -Stage ') -cursorColumn $line.Length |
    Select-Object -ExpandProperty CompletionMatches
$result.Count -eq 3
$result.CompletionText -contains 'Three'

True
True

Parametreler

-ast

Sekme tamamlama kullanarak genişletmek istediğiniz betiği temsil eden soyut söz dizimi ağacı (AST) nesnesi.

Tür:Ast
Position:0
varsayılan değer:None
Gerekli:True
Accept pipeline input:False
Accept wildcard characters:False

-cursorColumn

Giriş betiği dizesindeki imlecin sütun numarası. İmleç konumu, sekme tamamlama tarafından genişletilir belirteci belirlemek için kullanılır.

Tür:Int32
Position:1
varsayılan değer:None
Gerekli:False
Accept pipeline input:False
Accept wildcard characters:False

-inputScript

Sekme tamamlama kullanarak genişletmek istediğiniz betiği temsil eden dize.

Tür:String
Position:0
varsayılan değer:None
Gerekli:True
Accept pipeline input:False
Accept wildcard characters:False

-options

API'ye geçirilebilir seçenek değerlerinin CompleteInput() karma tablosu. API aşağıdaki boole seçeneklerini kabul eder:

  • IgnoreHiddenShares- olarak $trueayarlandığında ve \\COMPUTER\C$gibi \\COMPUTER\ADMIN$ gizli UNC paylaşımlarını yoksayın. PowerShell varsayılan olarak gizli paylaşımlar içerir.
  • RelativePaths - Varsayılan olarak PowerShell, sağladığınız girişe göre yolların nasıl genişletilmesi gerektiğine karar verir. Bu değeri, PowerShell'i $true yolları göreli yollarla değiştirmek için zorlar. Bu değeri olarak $falseayarlamak, PowerShell'i bunları mutlak yollarla değiştirmesi için zorlar.
  • LiteralPaths - Varsayılan olarak, PowerShell köşeli ayraçlar ve arka keneler gibi özel dosya karakterlerini kaçış eşdeğerleriyle değiştirir. Bu değerin değiştirilmesini engelleyecek şekilde $true ayarlanması.
Tür:Hashtable
Position:3
varsayılan değer:None
Gerekli:False
Accept pipeline input:False
Accept wildcard characters:False

-positionOfCursor

Giriş AST'sindeki imlecin sütun numarası. İmleç konumu, sekme tamamlama tarafından genişletilir belirteci belirlemek için kullanılır.

Tür:IScriptPosition
Position:2
varsayılan değer:None
Gerekli:True
Accept pipeline input:False
Accept wildcard characters:False

-tokens

Giriş betiğinden ayrıştırılan belirteç dizisi. Belirteçler, sekme tamamlama ile genişletilir belirteci belirlemek için kullanılır.

Tür:Token[]
Position:1
varsayılan değer:None
Gerekli:True
Accept pipeline input:False
Accept wildcard characters:False

Girişler

None

Çıkışlar

CommandCompletion