在我的脚本中,我传递了需要构建的组件列表
[ValidateSet("InstalComponent","CoreComponent","SDKComponent","ServiceComponent","TimeComponent")]
$Components=@("InstalComponent","CoreComponent"),
我们不时会添加新组件而且列表太长。如果有通过文件“GEt-content Components.txt”的方式。这将是好事。有没有办法像这样设置?
答案 0 :(得分:0)
简答:不。
更长的答案:如果您必须使用一组可配置的值验证参数,您仍然可以通过将验证放在函数体的开头来以旧方式执行:
function Foo {
Param(
[Parameter()]$Bar
)
$validSet = Get-Content 'C:\path\to\components.txt'
if ($validSet -notcontains $Bar) {
throw "Invalid argument for parameter -Bar: $Bar"
}
...
}
答案 1 :(得分:0)
我可能不太明白这个问题,但您可以像这样使用 ValidateScript
验证参数:
创建一个文件“Components.txt”,每个选项在单独的行上有一行,没有引号或逗号。然后像这样验证:
param(
[ValidateScript({
$Components = Get-Content .\Components.txt
$Components.Contains($_)
})
]
[String]$Component)
...