Exchange Server kurulumu sırasında veya bir Cumulative Update (CU) yüklerken aşağıdaki hata ile karşılaşabilirsiniz:
Exchange Server Kurulum ve CU Sırasında Hata
Bu hata, belirli bir “well-known object” girişinin Active Directory‘de silinmiş veya geçersiz bir nesneye işaret etmesi nedeniyle meydana gelir. Sorun, silinmiş bir objenin işaretçisinin hala yapılandırma içinde aktif olarak bulunmasıdır.
Error:
The following error was generated when “$error.Clear();
initialize-ExchangeUniversalGroups -DomainController $RoleDomainController -ActiveDirectorySplitPermissions $RoleActiveDirectorySplitPermissions
” was run: “Microsoft.Exchange.Management.Tasks.InvalidWKObjectException: The well-known object entry B:32:B3DDC6BE2A3BE84B97EB2DCE9477E389:CN=Help Desk\0ADEL:535b6109-7390-4593-b9d1-272911680022,CN=Deleted Objects,DC=XXX,DC=local on the otherWellKnownObjects attribute in the container object CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Epstein,DC=local points to an invalid DN or a deleted object. Remove the entry, and then rerun the task.
at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl)
at Microsoft.Exchange.Management.Tasks.InitializeExchangeUniversalGroups.CreateGroup(ADOrganizationalUnit usgContainer, String groupName, Int32 groupId, Guid wkGuid, String groupDescription, GroupTypeFlags groupType, Boolean createAsRoleGroup)
at Microsoft.Exchange.Management.Tasks.InitializeExchangeUniversalGroups.CreateRoleGroup(ADOrganizationalUnit usgContainer, RoleGroupDefinition roleGroup)
at Microsoft.Exchange.Management.Tasks.InitializeExchangeUniversalGroups.CreateAndValidateRoleGroups(ADOrganizationalUnit usgContainer, RoleGroupCollection roleGroups)
at Microsoft.Exchange.Management.Tasks.InitializeExchangeUniversalGroups.InternalProcessRecord()
at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__91_1()
at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)”.
Exchange Server Well-Known Object Entry Install Error Hatasının Çözümü
Bu hatayı çözmek için hata çıktısını biraz detaylandırmanız gerekmektedir, çünkü detaylandırdığınız zaman silinmiş bir obje olduğunu göreceksiniz.
ADSI Edit ile Sorunlu Objeyi Bulma ve Silme:
- ADSI Edit ile Sorunlu Objeyi Bulma ve Silme:
- ADSI Edit aracını açın (
adsiedit.msc
). CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=XX,DC=local
yolunu takip edin ve bu konumda bulunan sorunlu objeyi inceleyin.
- ADSI Edit aracını açın (
- PowerShell ile Sorunlu Well-Known Object Girişlerini Temizleme:
- Aşağıdaki PowerShell script’ini çalıştırarak, silinmiş objelere işaret eden well-known object girişlerini temizleyin. Bu script, ilgili girişleri arar ve silinenleri kaldırır.
# Get Microsoft Exchange Container
$objDE = New-Object System.DirectoryServices.DirectoryEntry
$ExchangeDN = [string]::Concat("LDAP://CN=Microsoft Exchange,CN=Services,CN=Configuration,", $objDE.distinguishedName)
$objCN = New-Object System.DirectoryServices.DirectoryEntry($ExchangeDN)
$gp = [Reflection.Bindingflags]::GetProperty
# get otherWellKnownObjects Collection
$objCol = $objCN.otherWellKnownObjects
$delCount = 0
# Walk though the Collection backwards (always do that when deleting items)
for ($i=$objCol.Count-1; $i -ge 0; $i--)
{
$objWKO = $objCol[$i]
$objType = $objWKO.GetType()
# Get the distinguishedName
$DNString = $objType.InvokeMember("DNString", $gp, $null, $objWKO, $null)
$BV = $objType.InvokeMember("BinaryValue", $gp, $null, $objWKO, $null)
$Guid = [GUID][System.BitConverter]::ToString($BV).Replace("-", "")
Write-Host "DNString: $DNString"
Write-Host "Guid: $Guid"
# Check if the item was deleted
if ($DNString.Contains("0ADEL"))
{
Write-Host "This is a Deleted Item" -foregroundcolor Red
# Remove the item (WARNING: No Confirmation asked)
$objCol.RemoveAt($i)
Write-Host "Object Removed" -foregroundcolor Red
$DelCount++
}
}
# Did we delete something?
if ($DelCount -gt 0)
{
Write-Host "Commiting Changes" -foregroundcolor Blue
# Commit changes, remove this line if you just want to test
# If you don't commit you will not delete anything
$objCN.SetInfo()
}
Uyarı: Bu script, doğrudan değişiklik yapar ve onay istemez. Test ortamında denedikten sonra gerçek ortamda uygulayın. Yapılan değişikliklerin yanlış olması durumunda geri dönüşü olmayabilir.
Sonuç:Bu adımlar, Exchange Server kurulum ve güncelleme işlemlerinde karşılaşılan “Invalid WK Object Exception” sorununu çözmeye yardımcı olur. Değişikliklerin uygulanması ve sistemin stabil hale gelmesi için Exchange Servislerini yeniden başlatmanız gerekebilir.
Hocam süpersin sagolasın, saatlerdir ugrasıyordum. Makalen cozum oldu 🙂