MSExchangeISからアプリケーションイベントエラー9646を取得しているExchange2010SP3サーバーがあります。
Mapiセッション[ID] [ADユーザー]がタイプ「objtFolder」の最大500個のオブジェクトを超えました
これを調査すると、原因は他の人のメールボックスに多くのフルアクセス許可を持つ複数のユーザーであることが判明しました。
これがSP1で変更された方法が原因で Technetの記事はこちら になり、必要な場合にのみユーザーを追加したり開いたりするのではなく、アクセスできるすべてのユーザーを自動的に開くようになりました。
理想的には、すべてのユーザーの-Automapping $ true文字列をグローバルに削除するために実行できるスクリプトが必要です。これにより、必要なときにメールボックスにアクセスできるようになりますが、メールボックスが自動的に開かず、MAPIセッションが使用されなくなります。
上記のURLからMicrosoftTechnetスクリプトを試しましたが、意図したとおりに機能していないようです。
[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
}
}