Назад | Перейти на главную страницу

Exchange 2010 EMS New-InboxRule не создает правила для одних пользователей и не создает несколько правил для других.

Мы пытаемся создать правило, согласно которому, если сообщение содержит XXXXX в теме, перемещаться в папку нежелательной почты.

Я предоставил своему пользователю права полного доступа ко всем почтовым ящикам на сервере.

Я подтвердил, что могу создавать правило для пользователей индивидуально

Проблема заключается в том, что команда работает для одних пользователей, а не для других. Аналогичным образом команда создает несколько копий правила для одних пользователей, а не для других. Кажется, в этом нет никакой закономерности.

Вот моя команда

    [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

Когда это сделано для нескольких пользователей, заменив "Kerry" на $ ($ _. Alias), это работает только для некоторых пользователей. Другие получают двойные или более копии правила, в то время как другие пользователи не получают его вообще .....

Очень странно.

Что я мог здесь упустить?

Первая ошибка связана с тем, что неявное удаленное взаимодействие PowerShell не поддерживает конвейерный ForEach. Вам нужно будет присвоить переменной, а затем выполнить ForEach In, например:

$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 в команде, но это должно исходить из конвейера. В приведенном выше примере, поскольку он находится в ForEach, вместо этого следует ссылаться на переменную итерации $ MB. Я предполагаю, что идентификатор папки, который вы указываете в -MoveToFolder, также должен быть другим, возможно, что-то вроде $($MB.SamAccountName): \ Нежелательная почта`. Возможно, вам придется повозиться с некоторыми из них.

Имейте в виду, что я наткнулся на эту ветку, потому что у меня проблемы с New-InboxRule, поэтому она все еще может не работать. Из-за этих других проблем я не могу это проверить. Тем не менее, все, что я здесь указал, является общим синтаксисом и должно выполняться независимо.

Дай мне знать, как дела ...