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
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.