Powershell 多个带循环的 If 语句
Powershell multiple If-Statements with loop
我必须检查 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\',''))
您只需从 $Right.IdentityReference
中剥离 Domain\
并查看是否可以在 $GroupArrayList
数组中找到剩余的字符串。
当你OR
进行比较时,为什么不测试 -in
数组?
if ($Right.IdentityReference -in
$User,
("Domain\" + $GroupArrayList[0]),
("Domain\" + $GroupArrayList[1]) ) {
我必须检查 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\',''))
您只需从 $Right.IdentityReference
中剥离 Domain\
并查看是否可以在 $GroupArrayList
数组中找到剩余的字符串。
当你OR
进行比较时,为什么不测试 -in
数组?
if ($Right.IdentityReference -in
$User,
("Domain\" + $GroupArrayList[0]),
("Domain\" + $GroupArrayList[1]) ) {