Exchange 2010 EMS New-InboxRule不为一些用户创build规则,并为其他用户创build多个规则

我们正试图制定一个规则,如果邮件中有XXXXX的主题,然后移动到垃圾邮件文件夹。

我已授予我的用户对服务器上所有邮箱的完全访问权限。

我已经确认我可以单独为用户创build规则

问题是该命令适用于某些用户,而不适用于其他用户。 类似的,该命令为某些用户创build了多个规则副本,而不是其他人。 这似乎没有任何模式。

这是我的命令

[PS] C:\Windows\system32>get-mailbox -organizationalunit "supernova.local/Active Users" -resultsize unlimited| foreach { new-inboxrule -name "Spam Move" -mailbox kerry -MoveToFolder "kerry:\Junk E-Mail" -SubjectContainsWords "[Spam:" -StopP rocessingRules $true -confirm:$false -force } 

当你这样做的个人用户。 (在这种情况下,“克里”)这里是输出。

  Pipeline not executed because a pipeline is already executing. Pipelines cannot be executed concurrently. + CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [], PSInvalidOperationException + FullyQualifiedErrorId : RemotePipelineExecutionFailed Name Enabled Priority RuleIdentity ---- ------- -------- ------------ Spam Move True 1 13037078695330709505 Spam Move True 1 13109136289368637441 Spam Move True 1 13181193883406565377 

当通过用$($ _。别名)replace“Kerry”而为多个用户完成时,它仅适用于某些用户。 其他得到的规则的两倍或更多的副本,而其他用户根本没有得到它…..

很奇怪。

我可以在这里错过什么?

第一个错误是因为PowerShell隐式远程不支持pipe道ForEach。 你将不得不分配给一个variables然后做ForEach在像:

 $MBs = Get-Mailbox -OrganizationalUnit "supernova.local/Active Users" -ResultSize Unlimited ForEach($MB in $MBs) { New-InboxRule -Name "Spam Move" -Mailbox $MB -MoveToFolder "kerry:\Junk E-Mail" ` -SubjectContainsWords "[Spam:" -StopProcessingRules $true -Confirm:$false -Force } 

我看到的第二个问题是,您正在命令中指定-Mailbox,但应该来自pipe道。 在上面的例子中,因为它在ForEach中引用迭代variables$ MB。 我猜你在-MoveToFolder中指定的文件夹ID也必须是不同的,也许像$($MB.SamAccountName) :\垃圾电子邮件。 你可能不得不修补这一些。

请记住,我碰到这个线程,因为我有自己的烦恼与新的InboxRule,所以它可能仍然无法正常工作。 由于这些其他问题,我无法testing这个。 这就是说我在这里指出的一切都是一般的语法,不pipe怎么说都应该是真的。

让我知道事情的后续…