Powershell多个带循环的If语句

时间:2019-04-24 12:43:59

标签: arrays powershell if-statement arraylist powershell-v2.0

我必须在if语句中检查多个数组条目。

if (($Right.IdentityReference -eq $User) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[0])) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[1])))

这将继续执行$ GroupArrayList [2],$ GroupArrayList [3],...

有什么办法可以让我遍历数组的每个条目吗?因为数组大小是动态的,所以我无法写下每个位置。如何创建这样的循环?

3 个答案:

答案 0 :(得分:1)

您可以使用Foreach

Foreach ($ArrayItem in $GroupArrayList) {
    if (($Right.IdentityReference -eq $User) -or ($Right.IdentityReference -eq ("Domain\" + $ArrayItem))) {
        # Do stuff
    }
}

变量$ArrayItem将引用您的$ GroupArrayList [2],$ GroupArrayList [3],...

答案 1 :(得分:0)

我认为您甚至不需要循环,而是使用-contains运算符,如下所示:

if (($Right.IdentityReference -eq $User) -or ($GroupArrayList -contains ($Right.IdentityReference -replace '^Domain\\',''))

您只需从Domain\剥离$Right.IdentityReference,看看是否可以在$GroupArrayList数组中找到保留的字符串。

答案 2 :(得分:0)

当您OR比较时为什么不测试-in数组?

if ($Right.IdentityReference -in 
        $User,
        ("Domain\" + $GroupArrayList[0]),
        ("Domain\" + $GroupArrayList[1]) ) {