Powershell带循环的多个If-Statements

问题描述 投票:0回答:3

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

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

这将继续使用$ GroupArrayList [2],$ GroupArrayList [3],...

我有什么办法可以浏览阵列的每个条目吗?我无法写下每个位置,因为数组大小是动态的。我怎样才能创建这样的循环?

arrays powershell if-statement arraylist powershell-v2.0
3个回答
1
投票

你可以使用Foreach

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

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


0
投票

我不认为你甚至需要一个循环,而是像这样使用-contains运算符:

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

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


0
投票

因为你是ORing比较的,为什么不测试-in阵列?

if ($Right.IdentityReference -in 
        $User,
        ("Domain\" + $GroupArrayList[0]),
        ("Domain\" + $GroupArrayList[1]) ) {
© www.soinside.com 2019 - 2024. All rights reserved.