我不是一个很好的编剧,我在翻译中迷失了方向......也许我做得完全错了......
我正在构建一个脚本,我希望用户从一个选项列表中进行选择,特别是一年中的月份,然后在脚本的后面使用这个结果。
下面是代码片段:
$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))
但是,我不断得到一个错误:
错误:使用"4"个参数调用"PromptForChoice"时出现异常:"对象引用未设置为对象的示例。" TestingMenu.ps1(31,1):错误:在行:31字符:1错误:+ $结果= $host. ui.提示选择($标题,$消息,$选项,[int []...错误:+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~错误:+类别信息:未指定:(:)[],方法调用异常错误:+完全限定的错误ID:异常错误:
我不确定我错过了什么......而且我可能会使它比需要的更复杂......但是结束变量$result应该是类似于"04-April"的内容。
你知道我错过了什么吗?
3条答案
按热度按时间px9o7tmv1#
这个变体很有效,而且不是那么多余。如果没有用&符号标记要选择的字母,选择就没有意义
具有此输出
svmlkihl2#
查看您的选项变量,在$option4后面有一个句点而不是逗号。
解决这个问题,它应该工作。
hi3rlvi23#
正如另一个答案(@user681141)所说,但可能更简洁一点;
你可以把数组通过管道传输到
ForEach-Object
,别名是%
: