目标:当用户输入的颜色不在列表中时,它应默认为灰色。如果用户在列表中选择应该使用颜色的颜色。
实际发生的事情:颜色总是默认为灰色。
纯文本示例1:选择颜色:黄色,绿色,红色,紫色或灰色。 用户:蓝色。 输出:颜色为灰色。
纯文本示例2:选择颜色:黄色,绿色,红色,紫色或灰色。 用户:绿色。 输出:颜色为绿色。
[CmdletBinding()]
param (
[Parameter(Mandatory=$True, HelpMessage="Choose yellow, green, red, purple or gray")]
[string]$color_select
)
$colors_list = "yellow", "green", "red", "purple", "gray", "random"
if ($color_select -notcontains $colors_list) {
$color_select = "gray"
}
Write-host "The color is: $color_select"
答案 0 :(得分:5)
在我看来,这样做更容易:
[CmdletBinding()]
param (
[Parameter(HelpMessage="Choose yellow, green, red, purple or gray")]
[ValidateSet('yellow','green','red','purple',"gray", "random")]
[string]$color_select="gray"
)
如果您打算省略参数,则将参数设置为必需参数是没有意义的。