Мы пытаемся создать правило, согласно которому, если сообщение содержит 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, поэтому она все еще может не работать. Из-за этих других проблем я не могу это проверить. Тем не менее, все, что я здесь указал, является общим синтаксисом и должно выполняться независимо.
Дай мне знать, как дела ...