Register-ArgumentCompleter
Özel bir bağımsız değişken tamlayıcı kaydeder.
Syntax
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
Register-ArgumentCompleter
[-CommandName <String[]>]
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[<CommonParameters>]
Description
cmdlet'i Register-ArgumentCompleter
ö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.
Örnekler
Örnek 1: Özel bağımsız değişken tamlayıcı kaydetme
Aşağıdaki örnek, cmdlet'in Id parametresi için bir bağımsız değişken tamamlayıcı kaydederSet-TimeZone
.
$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
İ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, id için kullanılabilir değerler cmdlet'i Get-TimeZone
kullanılarak alınır. Her Saat Dilimi için Id özelliği cmdlet'ine Where-Object
aktarılır. Cmdlet, Where-Object
tarafından $wordToComplete
sağlanan değerle başlamayan kimlikleri filtreler. Bu, kullanıcının Sekme tuşuna basmadan önce yazdığı metni temsil eder. Filtrelenen kimlikler, değer boşluk içeriyorsa her değeri tırnak içine alan cmdlet'ine yönlendirilirForEach-Object
.
İkinci komut scriptblock, ParameterName Id ve CommandNameSet-TimeZone
değerlerini geç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 Name parametresi için sekme tamamlamanın Stop-Service
ü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,
$_.Name,
"ParameterValue",
$_.Name
}
}
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 cmdlet'ine ForEach-Object
geçirilir. ForEach-Object
cmdlet'i yeni bir System.Management.Automation.CompletionResult nesnesi oluşturur ve bunu geçerli hizmetin adıyla doldurur (işlem hattı değişkeniyle $_.Name
temsil edilir).
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+Ara Çubuğu'na basması gibi bir listede görüntülenecek metin. Bu yalnızca görüntüleme için kullanılır ve seçildiğinde komuta geçirılmaz.
- resultType (CompletionResultType) - Tamamlanma sonucunun türü.
- toolTip (Dize) - Nesne hakkında görüntülenecek ayrıntıları içeren araç ipucu metni. Bu, kullanıcı Ctrl+Ara Çubuğu'na bastıktan sonra bir öğe seçtiğinde görünür.
Son komut, durdurulan hizmetlerin cmdlet'e Stop-Service
el ile geçirilebileceğini gösterir. Etkilenen tek yön sekme tamamlamadır.
Örnek 3: Özel yerel bağımsız değişken tamlayıcıyı kaydetme
Yerel komut için sekme tamamlama sağlamak için Native parametresini kullanabilirsiniz. Aşağıdaki örnek, Komut Satırı Arabirimi (CLI) için dotnet
sekme tamamlama ekler.
Not
Komut dotnet complete
yalnızca dotnet cli 2.0 ve üzeri sürümlerde kullanılabilir.
$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
İ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 dosyası bloğunda dotnet complete
, sekme tamamlama işlemini gerçekleştirmek için komutu kullanılır.
Sonuçlar, her değer için ForEach-Object
yeni bir CompletionResult nesnesi oluşturmak üzere System.Management.Automation.CompletionResult sınıfının yenistatik yöntemini kullanan cmdlet'ine aktarılır.
Parametreler
-CommandName
Komutların adını dizi olarak belirtir.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Native
Bağımsız değişken tamamlayıcının, PowerShell'in parametre adlarını tamamlayamadığı yerel bir komut için olduğunu gösterir.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParameterName
Bağımsız değişkeni tamamlanan parametrenin adını belirtir. Belirtilen parametre adı, cmdlet'in ForegroundColor parametresi Write-Host
gibi numaralandırılmış bir değer olamaz.
Sabit listeleri hakkında daha fazla bilgi için bkz . about_Enum.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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. Betik bloğunun işlem hattı (ForEach-Object
, Where-Object
vb.) veya başka bir uygun yöntem kullanarak değerlerin kaydını kaldırması gerekir. Bir değer dizisi döndürmek, PowerShell'in tüm diziyi tek sekme tamamlama değeri olarak ele almasına neden olur.
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) - Bu parametre, betik bloğunun sekme tamamlama sağladığı komutun adına ayarlanır.$parameterName
(Konum 1) - Bu parametre, değeri sekme tamamlama gerektiren parametreye ayarlanır.$wordToComplete
(Konum 2) - 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) - 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 . Ast Sınıfı.$fakeBoundParameters
(Konum 4) - Bu parametre, kullanıcı Sekme tuşuna basmadan önce cmdlet'ini içeren$PSBoundParameters
bir karma tabloya ayarlanır. Daha fazla bilgi için bkz. about_Automatic_Variables.
Native parametresini belirttiğinizde, betik bloğu aşağıdaki parametreleri belirtilen sırada almalıdır. PowerShell değerleri konuma göre geçirdiğinden parametrelerin adları önemli değildir.
$wordToComplete
(Konum 0) - 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) - 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 . Ast Sınıfı.$cursorPosition
(Konum 2) - Kullanıcı Sekme tuşuna bastığında bu parametre imlecin konumuna ayarlanır.
Parametre özniteliği olarak bir ArgumentCompleter da sağlayabilirsiniz. Daha fazla bilgi için bkz . about_Functions_Advanced_Parameters.
Type: | ScriptBlock |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
None
Nesneleri bu cmdlet'e yöneltemezsiniz.
Çıkışlar
None
Bu cmdlet çıkış döndürmez.
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin