如果声明不接受我的输入

时间:2017-11-29 13:43:13

标签: powershell if-statement

目标:当用户输入的颜色不在列表中时,它应默认为灰色。如果用户在列表中选择应该使用颜色的颜色。

实际发生的事情:颜色总是默认为灰色。

纯文本示例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"

1 个答案:

答案 0 :(得分:5)

在我看来,这样做更容易:

[CmdletBinding()]
param (
    [Parameter(HelpMessage="Choose yellow, green, red, purple or gray")]
    [ValidateSet('yellow','green','red','purple',"gray", "random")]
    [string]$color_select="gray"
)

如果您打算省略参数,则将参数设置为必需参数是没有意义的。