阅读以下答案:(其中基于变量内容的对象),(在PowerShell的Where-Object中使用字符串数组进行比较)
$allgroups
DisplayName
--------
Group1
Group2
Group3
$mailgroups
DisplayName
--------
Group1
Group3
$newgroup = $allgroups | ? ($_.DisplayName -notin $mailgroups)
$newgroup = $allgroups | ? ($_.DisplayName -notin ($mailgroups | Select DisplayName))
$newgroup 应该 = "显示名称: Group2",上面的命令返回 null。已尝试其他运算符:
-ne, -cnotin, -eq, -notcontains
你的语法是错误的:
$newgroup = $allgroups | ? DisplayName -notin $mailgroups.DisplayName
或者,如果您想保持自己的方式:
$newgroup = $allgroups | Where-Object { $PSItem.DisplayName -notin $mailgroups.DisplayName }
或者,对于 v2:
$newgroup = $allgroups | Where-Object {
($mailgroups | Select-Object -ExpandProperty DisplayName) -notcontains $_.DisplayName
}
脚注:$PSItem
和$_
相同; $PSItem
v3 中引入的。此外,?
是 Where-Object
的默认别名。