我不記得曾經在PowerShell中被提示多次選擇,但我已經看到幾個主機實現這個接口的例子。不幸的是,這些是我在接口中看到的唯一參考。我從來沒有見過「這裏是如何測試你正在實現它」。哪些cmdlet使用IHostUISupportsMultipleChoiceSelection界面來提示進行選擇?
回答
請忽略我的第一個答案;我現在可以看到,它根本不是答案。並感謝你提出了一個非常有趣的問題。
我仍然不知道使用該接口的cmdlet。但是我們可以通過腳本自行使用它。讓我們修改提到GET-Choice.ps1並調用新的獲取-Choice2.ps1:
<#
.SYNOPSIS
Displays PowerShell style menu and gets user choices
.DESCRIPTION
*) Returns choice indexes.
*) Choice keys are indicated by '&' in menu items.
*) Help strings can be empty or nulls (items are used themselves).
#>
param
(
# Menu caption
[string]$Caption = 'Confirm',
# Menu message
[string]$Message = 'Are you sure you want to continue?',
# Choice info pairs: item1, help1, item2, help2, ...
[string[]]$Choices = ('&Yes', 'Continue', '&No', 'Stop'),
# Default choice indexes (i.e. selected on [Enter])
[int[]]$DefaultChoice = @(0)
)
if ($args) { throw "Unknown parameters: $args" }
if ($Choices.Count % 2) { throw "Choice count must be even." }
$descriptions = @()
for($i = 0; $i -lt $Choices.Count; $i += 2) {
$c = [System.Management.Automation.Host.ChoiceDescription]$Choices[$i]
$c.HelpMessage = $Choices[$i + 1]
if (!$c.HelpMessage) {
$c.HelpMessage = $Choices[$i].Replace('&', '')
}
$descriptions += $c
}
$Host.UI.PromptForChoice($Caption, $Message, [System.Management.Automation.Host.ChoiceDescription[]]$descriptions, $DefaultChoice)
現在我們測試一下:
Get-Choice2 'Title' 'Message' -DefaultChoice 0, 1, 2 -Choices @(
'Choice &1', 'This is choice 1'
'Choice &2', ''
'Choice &3', ''
'Choice &4', ''
'Choice &5', ''
'Choice &6', ''
'Choice &7', ''
'Choice &8', ''
'Choice &9', ''
'Choice &0', ''
)
它打印10種選擇,前3個突出(在控制檯主機),並提示:
0> Test-Get-Choice2.ps1
Title
Message
[1] Choice 1
[2] Choice 2
[3] Choice 3
[4] Choice 4
[5] Choice 5
[6] Choice 6
[7] Choice 7
[8] Choice 8
[9] Choice 9
[0] Choice 0
[?] Help
(default choices are 1,2,3)
Choice[0]:
如果我們按Enter
立即輸出是默認3索引:0,1,2,如果我們輸入,例如:5 + Enter + 3 + Enter + 1 + Enter + Enter
則輸出爲4 ,2,0.
它的工作原理。 PowerShell ISE也支持這個功能,但是GUI版本中的UI可能更好。
例如:命令Remove-Item C:\TEMP\Test
會提示您選擇:
Confirm
The item at C:\TEMP\Test has children and the Recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
或者你可以建立使用這個腳本您自己的呼叫(或它的想法): Get-Choice.ps1 - Displays PowerShell style menu and gets a user choice
好博文。太糟糕了,功能沒有通過讀主機暴露出來。 – 2010-09-08 15:51:32
我詢問的接口中的方法返回一組選項。這個例子看起來像一個標準的「從列表中選擇一個」提示。 – 2010-09-09 14:48:54
從問題的接口IHostUISupportsMultipleChoiceSelection有唯一的方法'PromptForChoice'這是我的例子中顯示。另請參閱:http://msdn.microsoft.com/zh-cn/library/system.management.automation.host.ihostuisupportsmultiplechoiceselection_members – 2010-09-09 17:14:54
- 1. 。使用AutoCad的.Net界面 - 如何進行選擇
- 2. 使用Rails進行定期結算 - 我有哪些選擇?
- 3. 我選擇了哪些IIS Express選項進行下載?
- 4. 如何自動運行提示用戶界面選擇的PowerShell腳本?
- 5. Java有哪些性能改進提示?
- 6. jquery用戶界面選擇
- 7. Wicket黑客使用ListView,哪些選擇?
- 8. extjs 3.4如何使用提示界面?
- 9. 僅使用Silverlight進行用戶界面
- 10. 如何顯示一個界面來選擇python中的點?
- 11. 如何選擇使用XSLT從CDATA顯示哪些數據?
- 12. 使用地圖進行數據可視化 - 哪些API可供選擇? - Angular2 + Typescript
- 13. 使用Java EE 6進行REST風格的Web開發 - 有哪些選擇?
- 14. 在GridTemplateColumn中使用DataKeyNames和CheckBox來查看已經選擇了哪些行?
- 15. 如何選擇CSV中的哪些列與HighChart進行統計?
- 16. 使用UITableView進行選擇
- 17. 顯示某些錶行來自用戶的選擇
- 18. 使CruiseControl.NET項目顯示自上次運行以來進行了哪些更改
- 19. 如何檢測使用if語句選擇了哪些UIPickerView行
- 20. 關於界面和多態性的一些示例/提示
- 21. Asterisk Manager界面(AMI)有哪些限制?
- 22. 來自MS的哪些PowerShell cmdlet支持-UseTransaction
- 23. PHP類型提示界面
- 24. 使用UISegmentedControl進行多重選擇 - 頁面使用什麼?
- 25. 多目標優化:使用NSGA進行選擇與使用VEGA進行選擇
- 26. SQL查詢來選擇某些行
- 27. 設計模式來決定哪些SQL查詢來選擇
- 28. 使用Spock進行Grails測試 - 哪個模擬框架選擇?
- 29. 如何使Java文件選擇器在NetBeans界面前顯示?
- 30. 尋找一個用戶界面來選擇時間範圍
我希望我能給你多一個upvote。這正是我所期待的。我非常感謝你給予的額外關注。 – 2010-09-13 14:32:52