在几个月前完全起作用的某件事上发生了Exchange Powershell错误?

时间:2018-07-11 00:45:37

标签: powershell powershell-v2.0 exchange-server

几个月前,我写了这篇文章,以遍历几个域和一个用户列表,并让我读出每个用户从所列域中收到多少电子邮件。现在我收到一些超级奇怪的错误,我只是不知道它在说什么。

这是代码和错误

[long]$IntSent=0
[long]$IntRec=0
[long]$IntTotal=0
$startdate="06/09/2018 00:00:01"
$enddate="06/12/2018 23:59:59"

$domains=@(REDACTED) #etc
$users=@(REDACTED)    

ForEach ($user in $users) {
    foreach ($domain in $domains) {
get-messagetrackinglog -start $startdate  -End $enddate -Recipients $users -resultsize unlimited -EventID Receive | where {[string]$_.sender -like "*@$domain"} |ForEach{$IntRec++}
#|Where {[String]$_.recipients -notlike "*@contoso4.com*"}
}
}

错误:

The server software doesn't support the type of search requested.
    + CategoryInfo          : InvalidOperation: (:) [Get-MessageTrackingLog], LocalizedException
    + FullyQualifiedErrorId : 6220E2A4,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog
    + PSComputerName        : MUHSERVER

The server software doesn't support the type of search requested.
    + CategoryInfo          : InvalidOperation: (:) [Get-MessageTrackingLog], LocalizedException
    + FullyQualifiedErrorId : 6220E2A4,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog
    + PSComputerName        : MUHSERVER

The server software doesn't support the type of search requested.
    + CategoryInfo          : InvalidOperation: (:) [Get-MessageTrackingLog], LocalizedException
    + FullyQualifiedErrorId : 6220E2A4,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog
    + PSComputerName        : MUHSERVER

有什么想法吗?我不知道在哪里看。

1 个答案:

答案 0 :(得分:0)

此问题很可能与代理地址过多有关。如您所见here(不在答案中,但在下面):

  

如果邮箱在“电子邮件地址”标签中输入了49个以上的代理地址,搜索命令将失败

这可以解释为什么它以前可以工作,现在不可以工作。通常,解决方案是检查用户是否有49个以上的代理地址,但这可能不是这种情况。

您在ForEach中使用

-Recipients $users

因此,基本上,每个用户都从列表中搜索发送给所有用户的邮件。您可能想使用的是(注意缺少s

-Recipients $user

此外,如果我可能会提出一些建议(作为一个好习惯)-我通常在使用ForEach进行迭代时使用一个字符变量,如下所示:

ForEach ($u in $users)
ForEach ($d in $domains)

按照这种习惯,您可以像在脚本中那样,在ForEach中使用不正确的变量的可能性降到最低。