查找其值不属于另一个数组 PowerShell 的数组元素

akm*_*ith 7 windows powershell

我有两个数组

  • $adg-(AD组列表)

  • $dbs-(数据库名称列表)

假设我使用这个命令 $adg -match $dbs.i

输出将是$dbs名称中包含该字符串的所有 AD 组。

但是,我的目标是找到不属于 AD 组数组的数据库。

例如:

$adg = @("Dev22_Owner","Test49_Owner","Rocket_Owner")
$dbs = @("Dev22", "Confidential", "InternDB", "Rocket", "Test49")
Run Code Online (Sandbox Code Playgroud)

我应该采取什么方法来获得输出:

Confidential

InternDB

我尝试过$dbs | Where $adg -notmatch $dbs.i,但没有输出。

Mar*_*ndl 8

我首先从广告组中删除不必要的用户部分:

$groups = $adg | ForEach-Object {
    $_ -replace '_.*?$'
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用Where-Object带有-notin运算符的 cmdlet 来过滤它们:

$dbs | Where-Object { $_ -notin $groups }
Run Code Online (Sandbox Code Playgroud)

输出:

Confidential
InternDB
Run Code Online (Sandbox Code Playgroud)