在变量属性上筛选位置对象



阅读以下答案:(其中基于变量内容的对象),(在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 的默认别名。

最新更新