如何在PowerShell中检查变量是否在数组中?

Eth*_*eld 2 arrays powershell for-loop if-statement compare

我试图在powershell中创建邮箱权限的审计,并希望在powershell脚本中从输出中删除特定帐户,而不是之后手动删除.

为了做到这一点,我正在寻找一种方法来比较数组的内容与PowerShell中的单个字符串.

例如,如果我要声明一个数组:

$array = "1", "2", "3", "4"
Run Code Online (Sandbox Code Playgroud)

然后我想找到一种方法来做类似下面的事情:

$a = "1"
$b = "5"

if ($a -ne *any string in $array*) {do something} #This should return false and take no action

if ($b -ne *any string in $array*) {do something} #This should return true and take action
Run Code Online (Sandbox Code Playgroud)

我对如何实现这一点感到茫然,感谢任何帮助

Esp*_*o57 10

您有几种不同的选择:

$array = "1", "2", "3", "4"

$a = "1"
$b = "5"

#method 1
if ($a -in $array)
{
    Write-Host "'a' is in array'"
}

#method 2
if ($array -contains $a)
{
    Write-Host "'a' is in array'"
}

#method 3
if ($array.Contains($a))
{
    Write-Host "'a' is in array'"
}

#method 4
$array | where {$_ -eq $a} | select -First 1 | %{Write-Host "'a' is in array'"}
Run Code Online (Sandbox Code Playgroud)