我不是一个很棒的编剧,我迷失在翻译中......也许我在做这个完全错误的...Powershell - 让用户从1月到12月的列表中选择
我是建立一个脚本,我希望用户从选择列表中选择,特别是一年的月份。此结果稍后将在脚本中使用。
这里的片段:
$optionQuit = New-Object System.Management.Automation.Host.ChoiceDescription "Quit", "Quit"
$option1 = New-Object System.Management.Automation.Host.ChoiceDescription "01-January", "01-January OU"
$option2 = New-Object System.Management.Automation.Host.ChoiceDescription "02-February", "02-February OU"
$option3 = New-Object System.Management.Automation.Host.ChoiceDescription "03-March", "03-March OU"
$option4 = New-Object System.Management.Automation.Host.ChoiceDescription "04-April", "04-April OU"
$option5 = New-Object System.Management.Automation.Host.ChoiceDescription "05-May", "05-May OU"
$option6 = New-Object System.Management.Automation.Host.ChoiceDescription "06-June", "06-June OU"
$option7 = New-Object System.Management.Automation.Host.ChoiceDescription "07-July", "07-July OU"
$option8 = New-Object System.Management.Automation.Host.ChoiceDescription "08-August", "08-August OU"
$option9 = New-Object System.Management.Automation.Host.ChoiceDescription "09-September", "09-September OU"
$option10 = New-Object System.Management.Automation.Host.ChoiceDescription "10-October", "10-October OU"
$option11 = New-Object System.Management.Automation.Host.ChoiceDescription "11-November", "11-November OU"
$option12 = New-Object System.Management.Automation.Host.ChoiceDescription "12-December", "12-December OU"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($optionQuit, $option1, $option2, $option3, $option4. $option5, $option6, $option7, $option8, $option9, $option10, $option11, $option12)
$result = $host.ui.PromptForChoice($title, $message, $options, [int[]](0))
不过,我不断收到一个错误:
ERROR: Exception calling "PromptForChoice" with "4" argument(s): "Object reference not set to an instance of an object." TestingMenu.ps1 (31, 1): ERROR: At Line: 31 char: 1 ERROR: + $result = $host.ui.PromptForChoice($title, $message, $options, [int[] ... ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ERROR: + CategoryInfo : NotSpecified: (:) [], MethodInvocationException ERROR: + FullyQualifiedErrorId : NullReferenceException ERROR:
我不知道我错过了什么......,我可能使这比需要更复杂...但最终变量$结果应该是像“04年4月”例如。
任何想法我在这里失踪?
你应该发送'Collection',而不是一个数组。你的'ChoiceDescription []'是一个数组。看看MSDN上的例子[这里](https://msdn.microsoft.com/en-us/library/system.management.automation.host.pshostuserinterface.promptforchoice(v = vs.85).aspx) – gravity
有了这么多的选择,你可能会考虑重构你的代码,使之类似于: $ result = $ options | Out-GridView -Title“选择一个项目”-OutputMode Single “可为您提供所需的行为。 –
@gravity由于'Collection'具有[this构造函数](https://msdn.microsoft.com/en-us/library/ms132401.aspx)和单维基于零的数组,因此可以隐式地将数组转换为'Collection'实现'IList'的通用版本。 – PetSerAl