Powershell查询-我可以使用多少个?

问题描述

我在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

“详细信息:”之后的内容是来自远程交换服务器的消息