我必须在if语句中检查多个数组条目。
if (($Right.IdentityReference -eq $User) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[0])) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[1])))
这将继续执行$ GroupArrayList [2],$ GroupArrayList [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]) ) {