powershell - Powershell如何从另一个变量中减去一个变量,两者都包含Exchange邮箱对象标识
问题描述
我有两个变量都包含用户帐户的Get-Mailbox
对象"Identity"
。我需要从另一个 IE 中减去一个的内容:
$termednofwd = (domain.local/OUname/SubOU/Users/first1 last1, domain.local/OUname/SubOU/first2 last2)
$termedfmr = (domain.local/OUname/SubOU/Users/first1 last1)
我想要一些可以$termedfmr
从$termednofwd
给出如下内容中减去的内容。Compare-Object
只列出两者中的内容,我基本上需要从第一个变量中减去两者中的内容。本质上:
$termednofwdnofmr = $termednofwd - $termedfmr
导致:
$termednofwdnofmr = (domain.local/OUname/SubOU/first2 last2)
解决方案
在集合论术语中,您正在寻找两个集合之间的相对补充,这可以提供,尽管它需要额外的努力:Compare-Object
默认情况下,Compare-Object
提供两个集合之间的对称差,即列出相对补集的并集;也就是说,给定两个集合 A 和 B,它列出了B 中不存在于 A 中的那些元素和那些 A 中不存在于 B 中的元素,并且它使用.SideIndicator
属性来指示哪个是哪个:
'<='
表示集合 A 唯一的对象(-ReferenceObject
参数,或第一个位置参数),而'=>'
表示集合 B 唯一的元素(-DifferenceObject
参数,或第二个位置参数)。
因此,您需要按其.SideIndicator
值过滤输出对象。
该-PassThru
开关还确保输入对象被传递(而不是将它们包装在包含它们的[pscustomobject]
实例.InputObject
中):
$termednofwd = 'domain.local/OUname/SubOU/Users/first1 last1',
'domain.local/OUname/SubOU/first2 last2'
$termedfmr = 'domain.local/OUname/SubOU/Users/first1 last1'
# Return the elements in $termednofwd that aren't also present in $termedfmr
Compare-Object $termednofwd $termedfmr -PassThru |
Where-Object SideIndicator -eq '<='
上面的产量'domain.local/OUname/SubOU/first2 last2'
,即那些$termednofwd
不存在于的元素$termedfmr
。
注意:为简洁起见,以上使用字符串作为输入对象;在您的情况下,由于您正在使用Get-Mailbox
cmdlet 返回的对象并希望根据它们的.Identity
属性值进行比较,因此您需要使用:
# If you only need the identity values as results.
Compare-Object $termednofwd.Identity $termedfmr.Identity -PassThru |
Where-Object SideIndicator -eq '<='
# Alternatively, if you need the whole mailbox objects.
Compare-Object -Property Identity $termednofwd $termedfmr -PassThru |
Where-Object SideIndicator -eq '<='
另请参阅:GitHub 问题 #4316Compare-Object
,它建议使用集合操作进行增强。
推荐阅读
- java - 数组查找与位移的性能
- html - 确保 html 标签中没有遗漏 i18n 标签
- ios - 使用 UISearchController 搜索后编辑过滤数组的最佳方法
- javascript - React中for循环内的异步函数
- c# - WWW以json格式从php mysql接收C#数据
- javascript - 如何使用数组中的 JavaScript 创建动态树?
- python - 从另一个列表python中创建完全匹配的列表
- amazon-web-services - 创建到 Athena 的 JDBC 连接不起作用
- javascript - setState 之后的 setState
- google-maps - 离子 4 [谷歌地图]