Hi Marco,
Thanks for your reply. I have checked the Exchange logs and have found the error while creating the global address list. The error is given below.
Cmdlet failed. Cmdlet New-GlobalAddressList, parameters -Name "123456 Global Address List" -RecipientFilter "(Alias -ne $null -and CustomAttribute1 -eq '123456')" -DomainController "DC01.domain.com".
Moreover, I have deleted all the public folder and public folder mailboxes. Created new one with below command and now its showing with Primary hierarchy. But still issue exist. I have searched all over the internet and all are saying that this error means issue with public folder hierarchy but its not resolving for me.
New-Mailbox RootPFMailbox -PublicFolder
I also assume it's an issue with pf.
you can try and run the command manually in shell and see if it gives any more detailed error back.
(i have pretty much seen everything from a corrupt install to as simple as a broken AD causing similar issues where google is really not helpful sending you down the wrong path)
If you want you can also purchase premium support where i can look together with you.
Hi Marco,
The issue has been resolved. The issue was coming due orphan entry of global address list in ADSI.Edit. To resolve this case, refer to the below steps.
- Open Run and type ADSI.EDIT. Then add in configuration. Expand Services and right-click CN=Microsoft Exchange and select properties. Remove the GAL address list found in step 1 from globalAddressList and globalAddressList2 attribute.
- Remove all those entries which are with del in their name.
@marco, I have the script to find the bad/corrupted global entries but I am not able to add it here. I have provided the code here just copy and paste in notepad and save it with .PSI and run it in Exchange. It will provide you the list of bad/corrupted orphan global entries.
$ad = [ADSI]"LDAP://rootDSE";
$domain = $ad.rootDomainNamingContext;
$obj = New-Object System.DirectoryServices.DirectoryEntry("LDAP://CN=Microsoft Exchange,CN=Services,CN=Configuration,$domain");
Write-Host -f Yellow "`nSearching GALs in $($obj.Path)";
$count = 0;
$GALCount = 0;
$Gals1= $obj.GlobalAddressList;
foreach($g in $Gals1)
{
$GalCount = $GalCount +1;
$g= $g.ToString().ToLower();
if($g.Contains("cn=deleted objects"))
{
Write-Host $g;
$count= $count +1;
}
}
Write-Host "`n$GalCount GAL entries found in property GlobalAddressList";
Write-Host "$Count corrupted GAL entries found in property GlobalAddressList";
$GALCount = 0;
$count = 0;
$Gals2= $obj.GlobalAddressList2;
foreach($g in $Gals2)
{
$GalCount = $GalCount +1;
$g= $g.ToString().ToLower();
if($g.Contains("cn=deleted objects"))
{
Write-Host $g;
$count= $count +1;
}
}
Write-Host "`n`n$GalCount GAL entries found in property GlobalAddressList2";
Write-Host "$Count corrupted GAL entries found in property GlobalAddressList2";
Ah, yeah deleted items can also cause this. though this should normally trigger a warning in your event viewer.
Nice script tho, i will see if i can add it under tools of SolidCP (i normally always check them manually before).