如何根据PowerShell中的长集合验证参数?
我正在写一个脚本,它将接受一些参数。我需要验证一个用户必须输入的参数。我用于如何根据PowerShell中的长集合验证参数?,powershell,parameters,Powershell,Parameters,我正在写一个脚本,它将接受一些参数。我需要验证一个用户必须输入的参数。我用于[ValidateSet(…)]块的Param功能。 但是,我需要根据非常长的哈希表验证此参数。 由于我的哈希表是在Param之后声明的,因此如何根据该哈希表的键验证用户输入?正确地指出,在您的情况下,您需要在脚本中执行参数验证,因为要验证的值在脚本声明(解析)时还不可用时间;使用脚本块(为了简单起见)演示该技术: & { param( [string] $SomeParam )
[ValidateSet(…)]
块的Param
功能。
但是,我需要根据非常长的哈希表
验证此参数。
由于我的哈希表是在Param
之后声明的,因此如何根据该哈希表的键验证用户输入?正确地指出,在您的情况下,您需要在脚本中执行参数验证,因为要验证的值在脚本声明(解析)时还不可用时间;使用脚本块(为了简单起见)演示该技术:
& {
param(
[string] $SomeParam
)
# The hashtable to validate against.
$hashTable = @{ foo = 1; bar = 2; baz = 3 }
# Check the -SomeParam argument against the keys of $hashTable.
if (-not $hashTable.ContainsKey($SomeParam)) {
Throw "Invalid -SomeParam argument: $SomeParam"
}
# ...
} bar # OK, because 'bar' is a key in $hashTable
参数验证不是这样工作的。如果您需要针对
Param()
块后声明的内容进行验证,那么您也需要将验证代码放在块后。