问题描述
我在Powershell中找不到有关-Filter限制的任何信息 我想使用
在交换服务器上查询许多组Get-distributionGroup
但是这些组的数量很大,我会将这个查询分为许多查询(例如每50个,如果那是在过滤器中使用-OR参数的限制)
最后,命令将类似于:
Get-distributionGroup -Filter "(Name like xyz) -or (Name like 'abc') or (Name like 'def')"
有人知道使用-or过滤器有什么限制吗?
或者也许有更好的方法?
解决方法
选项1)以编程方式构建过滤器
documentation没有提及限制。不过,自动创建过滤器并从文件或变量中检索搜索词会更容易:
# get the search values from a file or variable
$searchTerms = Get-Content "searchTerms.txt"
# OR define the values in your script
$searchTerms = "xyz","abc","def"
# build the filter
$filter = ($searchTerms | foreach {"(Name like '$_')"}) -join " -or "
Get-DistributionGroup -Filter $filter
选项2)分别按每个搜索词进行过滤
也可以拆分过滤器,但是您必须删除重复项,如下所示:
$searchTerms | foreach {Get-DistributionGroup -Filter "(Name like '$_')"} | select -Unique
选项3)后备:查询所有内容并进行自己的过滤
或者,您可以获取所有通讯组并进行自己的过滤:
Get-DistributionGroup | where {
$name = $_.Name
return $null -ne $searchTerms.where({$name -like $_},"First")
}
,
如果有人感兴趣,则限制为250个子过滤器。我已设置发送到交换服务器的命令无法成功登录服务器时, 并获得信息:
REQUIRES_NEW
“详细信息:”之后的内容是来自远程交换服务器的消息