powershell - 在变量属性上过滤 Where-Object
问题描述
阅读以下答案:(基于变量内容的对象),(使用字符串数组在 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 should = "DisplayName: 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
。
推荐阅读
- d3.js - D3沿路径为任意svg设置动画
- elasticsearch - 带有嵌套字段的 Elasticsearch 插入适用于 Kibana,但不适用于 cURL
- php - NotFoundHttpException 仅适用于 CSS 和 JS 文件
- javascript - Express 中基于子域(主机)的路由
- android - OnClickListener 不适用于片段
- python - 写一些正则表达式来清理字符串列表
- python - 在使用块时满足条件时打破 Pandas read_csv
- bash - 如何使用一个 .gitconfig 别名调用多个 git 命令
- django - Django Crispy Forms - 未显示复选框
- node.js - 如何在 mongodb 中使用 typeorm 中的“OR”运算符