У меня есть сервер Exchange 2010 SP3, который получает ошибку события приложения 9646 от MSExchangeIS:
Сеанс Mapi [ID] [Пользователь AD] превысил максимальное количество объектов типа "objtFolder" - 500.
В ходе исследования выяснилось, что причиной является несколько пользователей, у которых есть много разрешений на полный доступ к почтовым ящикам других людей.
Из-за того, как это изменилось в SP1 См. Статью Technet ЗДЕСЬ, Теперь они автоматически открывают всех пользователей, к которым у них есть доступ, вместо того, чтобы добавлять или открывать их только при необходимости.
В идеале мне нужен сценарий, который я могу запустить, чтобы глобально удалить строку -Automapping $ true для всех пользователей: это должно оставить им доступ к почтовому ящику, когда это необходимо, но не дать ему автоматически открываться, занимая сеансы MAPI.
Я попробовал Microsoft Technet Script из приведенного выше URL-адреса, но, похоже, он не работал должным образом:
[PS]$FixAutoMapping = Get-MailboxPermission sharedmailbox|where {$_AccessRights -eq "FullAccess" -and $_IsInherited -eq $false}
The operation couldn't be performed because object sharedmailbox couldn't be found on '[Servername]'.
+ CategoryInfo : InvalidData: (:) [Get-MailboxPermission], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : B485A4C7,Microsoft.Exchange.Management.RecipientTasks.GetMailboxPermission
Я предполагаю, что sharedmailbox - это конкретный пример почтового ящика, которого нет на моем сервере: мне нужен сценарий, который просматривает все почтовые ящики, а затем меняет Automapping $ true на Automapping $ false для любых разрешений доступа к почтовому ящику.
Возможно ли это сделать?
Это невероятно просто. Вам просто нужно получить список почтовых ящиков и запустить пример для каждого из них:
# Get all mailboxes in the forest
$Mailboxes = Get-Mailbox -ResultSize unlimited -IgnoreDefaultScope
$ConfirmPreference = 'None'
# Iterate over each mailbox
foreach($Mailbox in $Mailboxes)
{
try
{
# Try to run the example fix against the current $Mailbox
$FixAutoMapping = Get-MailboxPermission $Mailbox |where {$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}
$FixAutoMapping | Remove-MailboxPermission
$FixAutoMapping | ForEach {Add-MailboxPermission -Identity $_.Identity -User $_.User -AccessRights:FullAccess -AutoMapping $false}
}
catch
{
# Inform about the error if unsuccessful
Write-Host "Encountered error: $($Error[0].Exception) on mailbox $($Mailbox.DisplayName)" -ForegroundColor Red
}
}