几个月前,我写了这篇文章,以遍历几个域和一个用户列表,并让我读出每个用户从所列域中收到多少电子邮件。现在我收到一些超级奇怪的错误,我只是不知道它在说什么。
这是代码和错误
[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
有什么想法吗?我不知道在哪里看。
答案 0 :(得分:0)
此问题很可能与代理地址过多有关。如您所见here(不在答案中,但在下面):
如果邮箱在“电子邮件地址”标签中输入了49个以上的代理地址,搜索命令将失败
这可以解释为什么它以前可以工作,现在不可以工作。通常,解决方案是检查用户是否有49个以上的代理地址,但这可能不是这种情况。
您在ForEach
中使用
-Recipients $users
因此,基本上,每个用户都从列表中搜索发送给所有用户的邮件。您可能想使用的是(注意缺少s
)
-Recipients $user
此外,如果我可能会提出一些建议(作为一个好习惯)-我通常在使用ForEach
进行迭代时使用一个字符变量,如下所示:
ForEach ($u in $users)
ForEach ($d in $domains)
按照这种习惯,您可以像在脚本中那样,在ForEach
中使用不正确的变量的可能性降到最低。