Aracılığıyla paylaş


Register-ArgumentCompleter

Özel bir bağımsız değişken tamlayıcı kaydeder.

Syntax

NativeSet

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

PowerShellSet

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

Description

Register-ArgumentCompleter cmdlet'i özel bir bağımsız değişken tamlayıcı kaydeder. Bağımsız değişken tamamlayıcı, belirttiğiniz herhangi bir komut için çalışma zamanında dinamik sekme tamamlama sağlamanıza olanak tanır.

Bu komutu CommandName parametresiyle ve ParameterName veya Native parametreleri olmadan çağırdığınızda, komut Native parametresini belirttiğiniz gibi çalışır. Bu, bağımsız değişken tamlayıcının PowerShell komut parametreleri için çalışmasını engeller. PowerShell komutları için bir bağımsız değişken tamlayıcı kaydetmek istediğinizde her zaman ParameterName parametresini belirtin.

Örnekler

Örnek 1: Özel bağımsız değişken tamlayıcı kaydetme

Aşağıdaki örnek, cmdlet'in Set-TimeZone parametresi için bir bağımsız değişken tamamlayıcı kaydeder.

$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

İlk komut, kullanıcı Sekme tuşuna bastığında geçirilen gerekli parametreleri alan bir betik bloğu oluşturur. Daha fazla bilgi için ScriptBlock parametre açıklamasına bakın.

Scriptblock içinde , id için kullanılabilir değerler cmdlet'i Get-TimeZone kullanılarak alınır. Her Saat Dilimi için Kimliği özelliği Where-Object cmdlet'ine aktarılır. Where-Object cmdlet'i, $wordToCompletetarafından sağlanan değerle başlamayan kimlikleri filtreler. Bu, kullanıcının Sekmebasılmadan önce yazdığı metni temsil eder. Filtrelenen kimlikler, boşluk içeren değerleri işlemek için her değeri tırnak içine alan ForEach-Object cmdlet'ine yönlendirilir.

İkinci komut scriptblock, ParameterNameId ve CommandNameSet-TimeZonegeçirerek bağımsız değişken tamlayıcısını kaydeder.

Örnek 2: Sekme tamamlama değerlerinize ayrıntı ekleme

Aşağıdaki örnek, cmdlet'in Stop-Service parametresi için sekme tamamlamanın üzerine yazar ve yalnızca çalışan hizmetleri döndürür.

$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

İlk komut, kullanıcı Sekme tuşuna bastığında geçirilen gerekli parametreleri alan bir betik bloğu oluşturur. Daha fazla bilgi için ScriptBlock parametre açıklamasına bakın.

Betik bloğunda, ilk komut cmdlet'ini Where-Object kullanarak çalışan tüm hizmetleri alır. Hizmetler ForEach-Object cmdlet'ine yöneltilir. ForEach-Object cmdlet'i yeni bir System.Management.Automation.CompletionResult nesnesi oluşturur ve bunu geçerli hizmetin adıyla doldurur ($_.Nameişlem hattı değişkeniyle gösterilir).

CompletionResult nesnesi, döndürülen her değere ek ayrıntılar sağlamanıza olanak tanır:

  • completionText (Dize) - Otomatik tamamlama sonucu olarak kullanılacak metin. Bu, komuta gönderilen değerdir.
  • listItemText (Dize) - Kullanıcının Ctrl+Spacetuşlarına basması gibi bir listede görüntülenecek metin. PowerShell bunu yalnızca görüntüleme için kullanır. Seçildiğinde komuta geçirilmiyor.
  • resultType (CompletionResultType) - Tamamlanma sonucunun türü.
  • araç İpucu (Dize) - Nesne hakkında görüntülenecek ayrıntıları içeren araç ipucu metni. Bu, kullanıcı Ctrl+Aratuşuna bastıktan sonra bir öğe seçtiğinde görünür.

Örnek 3: Özel yerel bağımsız değişken tamlayıcıyı kaydetme

Yerel bir komut için sekme tamamlama sağlamak için Native parametresini kullanabilirsiniz. Aşağıdaki örnek, dotnet Komut Satırı Arabirimi (CLI) için sekme tamamlama ekler.

Uyarı

dotnet complete komutu yalnızca dotnet cli'nin 2.0 ve üzeri sürümlerinde kullanılabilir.

$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

İlk komut, kullanıcı Sekme tuşuna bastığında geçirilen gerekli parametreleri alan bir betik bloğu oluşturur. Daha fazla bilgi için ScriptBlock parametre açıklamasına bakın.

Komut bloğunda dotnet complete , komut sekme tamamlama işlemini gerçekleştirir. Sonuçlar, her değer için bir ForEach-Object nesnesi oluşturmak üzere System.Management.Automation.CompletionResult sınıfının yeni statik yöntemini kullanan cmdlet'ine aktarılır.

Parametreler

-CommandName

Bağımsız değişken tamlayıcısını kaydetmek için bir veya daha fazla komutun adını belirtir. Bu parametre yerel komutlar için zorunludur.

Bu parametreyi ParameterName veya Native parametreleri olmadan belirttiğinizde, komut Native parametresini belirtmiş gibi davranır. PowerShell komutları için bağımsız değişken tamamlayıcılarını kaydederken her zaman ParameterName parametresini belirtin.

Bu parametreyi belirtmezseniz PowerShell, belirtilen ParameterName için bağımsız değişken tamlayıcısını tüm PowerShell komutlarında kaydeder.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

NativeSet
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
PowerShellSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Native

Bağımsız değişken tamamlayıcının, PowerShell'in parametre adlarını tamamlayabildiği yerel bir komut için olduğunu gösterir.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

NativeSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-ParameterName

Bağımsız değişken tamlayıcının uygulandığı parametrenin adını belirtir. Belirtilen parametrelerin türü, cmdlet'in Write-Host parametresi gibi bir numaralandırma olamaz.

Sabit listeleri hakkında daha fazla bilgi için bkz. about_Enum.

PowerShell komutları için bir bağımsız değişken tamlayıcı kaydederken her zaman bu parametreyi belirtin. ParameterName veya Native parametreleri olmadan CommandName parametresini belirttiğinizde, komut Native parametresini belirttiğiniz gibi davranır.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

PowerShellSet
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-ScriptBlock

Sekme tamamlama gerçekleştirmek için çalıştırılacak komutları belirtir. Sağladığınız betik bloğu, girişi tamamlayan değerleri döndürmelidir. Scriptblock, işlem hattını (ForEach-Object, Where-Objectvb.) veya başka bir uygun yöntemi kullanarak değerlerin kaydını kaldırmalıdır. Bir değer dizisi döndürmek, PowerShell'in tüm diziyi bir sekme tamamlama değeri olarak ele almasına neden olur.

Betik bloğu, kullanıcı deneyimini geliştirmek için her değer için System.Management.Automation.CompletionResult nesnelerini de döndürebilir. CompletionResult nesnelerini döndürmek, kullanıcılar kullanılabilir tamamlamaların listesini göstermek için Ctrl+Ara Çubuğu bastığında görüntülenen araç ipuçlarını ve özel liste girdilerini tanımlamanızı sağlar.

Betik bloğu aşağıdaki parametreleri aşağıda belirtilen sırayla kabul etmelidir. PowerShell değerleri konuma göre geçirdiğinden parametrelerin adları önemli değildir.

  • $commandName (Konum 0, Dize) - Bu parametre, betik bloğunun sekme tamamlama sağladığı komutun adına ayarlanır.
  • $parameterName (Konum 1, Dize) - Bu parametre, değeri sekme tamamlama gerektiren parametreye ayarlanır.
  • $wordToComplete (Konum 2, Dize) - Bu parametre, kullanıcının Sekme tuşuna basmadan önce sağladığı değere ayarlanır. Betik bloğunuz sekme tamamlama değerlerini belirlemek için bu değeri kullanmalıdır.
  • $commandAst (Konum 3, CommandAst) - Bu parametre geçerli giriş satırı için Soyut Söz Dizimi Ağacı 'na (AST) ayarlanır. Daha fazla bilgi için bkz. commandast sınıfı .
  • $fakeBoundParameters (Konum 4 IDictionary) - Bu parametre, kullanıcı $PSBoundParametersSekme tuşuna basmadan önce cmdlet'in içeren bir karma tabloya ayarlanır. Daha fazla bilgi için bkz. about_Automatic_Variables.

Native parametresini belirttiğinizde, betik bloğunun belirtilen sırada aşağıdaki parametreleri alması gerekir. PowerShell değerleri konuma göre geçirdiğinden parametrelerin adları önemli değildir.

  • $wordToComplete (Konum 0, Dize) - Bu parametre, kullanıcının Sekme tuşuna basmadan önce sağladığı değere ayarlanır. Betik bloğunuz sekme tamamlama değerlerini belirlemek için bu değeri kullanmalıdır.
  • $commandAst (Konum 1, CommandAst) - Bu parametre geçerli giriş satırı için Soyut Söz Dizimi Ağacı'na (AST) ayarlanır. Daha fazla bilgi için bkz. commandast sınıfı .
  • $cursorPosition (Konum 2, Int32) - Bu parametre, kullanıcı Sekmebastığında imlecin konumuna ayarlanır.

Parametre özniteliği olarak bir ArgumentCompleter de sağlayabilirsiniz. Daha fazla bilgi için bkz. about_Functions_Advanced_Parameters.

Parametre özellikleri

Tür:ScriptBlock
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

Girişler

None

Nesneleri bu cmdlet'e yöneltemezsiniz.

Çıkışlar

None

Bu cmdlet çıkış döndürmez.