我必须在if语句中检查多个数组条目。
if (($Right.IdentityReference -eq $User) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[0])) -or ($Right.IdentityReference -eq ("Domain\" + $GroupArrayList[1])))
这将继续使用$ GroupArrayList [2],$ GroupArrayList [3],...
我有什么办法可以浏览阵列的每个条目吗?我无法写下每个位置,因为数组大小是动态的。我怎样才能创建这样的循环?
你可以使用Foreach
Foreach ($ArrayItem in $GroupArrayList) {
if (($Right.IdentityReference -eq $User) -or ($Right.IdentityReference -eq ("Domain\" + $ArrayItem))) {
# Do stuff
}
}
变量$ArrayItem
将引用你的$ GroupArrayList [2],$ GroupArrayList [3],...
我不认为你甚至需要一个循环,而是像这样使用-contains
运算符:
if (($Right.IdentityReference -eq $User) -or ($GroupArrayList -contains ($Right.IdentityReference -replace '^Domain\\',''))
你只需从Domain\
剥离$Right.IdentityReference
,看看剩下的字符串是否可以在$GroupArrayList
数组中找到。
因为你是OR
ing比较的,为什么不测试-in
阵列?
if ($Right.IdentityReference -in
$User,
("Domain\" + $GroupArrayList[0]),
("Domain\" + $GroupArrayList[1]) ) {