我在做一些可能很容易做的东西时遇到了点麻烦,但我找不到方法。
我试图使一个验证器PSCustomObject来验证多个输入从整个程序,所以在最后,它启用了一个按钮(有wpf接口)。
现在我使用一个带有多个条件的IF语句(一个条件对应于验证器对象中的每个属性)来检查是否所有验证都为真,但是在脚本中占用了相当长的时间。
下面是我现在拥有的一个例子:
PSCustomObject]$verifier = @{
'Item1' = $false
'Item2' = $false
'Item3' = $false
'Item4' = $false
'Item5' = $false
}
*code where users modifies the input that alters the items in the pscustomobject*
if(($verifier.Item1) -and ($verifier.Item2) -and ($verifier.Item3) -and ($verifier.Item4) -and ($verifier.Item5)){
*enable the button*
}
else{
*graphically show the user the wrong/missing input*
}
有没有什么方法可以让这个IF语句更简单?尝试使用foreach,但它同时验证所有值,而不是评估每个值。我希望条件在所有值都为真时返回真,在任何值为假时返回假,并恢复那些为假的值。
提前感谢您的帮助!
1条答案
按热度按时间ccrfmcuu1#
有没有什么方法可以让这个IF语句更简单?
当然,使用containment操作符:
您可以通过
PSObject
内部成员访问所有属性的值。注意:
$verifier = [PSCustomObject]@{
和[PSCustomObject] $verifier = @{
有明显区别,前者返回自定义对象,后者返回哈希表。[pscustomobject]
类型加速器仅在强制转换为哈希表时有效,而在约束变量时无效。如果你想使用hashtable而不是PSCustomObject,那么从它调用
.Values
属性: