Sorry for not getting back before, but i've been busy doing other stuff.
Tried setting the loglevel to 4, and this is what happens just before it errors out the first time:
[12/11/2016 12:07:52 PM] INFO: Exchange Get Active Directory Object LDAP://<dc fqdn>/CN=bjerggaard.me Offline Address Book,CN=Offline Address Lists,CN=Address Lists Container,CN=<domain>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=<domain>,DC=dk from <dc fqdn>
So it seems like it fails on creating the offline address book.
- Or doesn't create it in the right location.
The MSExchange Management log also has a few errors:
Cmdlet failed. Cmdlet Get-AddressList, parameters -Identity "bjerggaard.me Address List" -DomainController "<dc fqdn>".
Cmdlet failed. Cmdlet Get-AddressList, parameters -Identity "bjerggaard.me Rooms" -DomainController "<dc fqdn>".
What should I investigate next? None of this is production yet, but I would like it to be soon.
Well from the error it simply can't make Offline addressbooks, so that it then doesn't have the GAL / Address lists i think makes sense (as they depend on it).
Can you verify you have Active Directory Powershell module installed and Active Directory group policy mmc on the server(s) which host the Hosted Organization service?
Optionally you can try and execute the command manually in exchange shell to see if it works on your server.
Digging a bit deeper and running the cmdlets manually results in this when running new-offlineaddressbook:
New-OfflineAddressBook : The offline address book virtual directory specified "<exchange server fqdn>System.String[]" does not reference an existing offline address book virtual directory.
This seems weird.. Especially the System.String[] part
To be precise - this is the command I ran:
New-OfflineAddressBook -Name 'bjerggaard.me Offline Address Book' -AddressLists 'bjerggaard.me Address List' -IsDefault $False -GlobalWebDistributionEnabled $False -VirtualDirectories System.String[] -DomainController '<dc fqdn>'
Please note the System.String[] part.. That doesn't seem right..
Why would SolidCP put that there?
The total script is:
Command cmd = new Command("New-OfflineAddressBook");
cmd.Parameters.Add("Name", oabName);
cmd.Parameters.Add("AddressLists", addressListName);
//cmd.Parameters.Add("PublicFolderDistributionEnabled", PublicFolderDistributionEnabled);
cmd.Parameters.Add("IsDefault", false);
cmd.Parameters.Add("GlobalWebDistributionEnabled", false);
//TODO: fix web distribution
if (!string.IsNullOrEmpty(oabVirtualDirs))
{
ArrayList virtualDirs = new ArrayList();
string[] strTmp = oabVirtualDirs.Split(',');
foreach (string s in strTmp)
{
virtualDirs.Add(s);
}
cmd.Parameters.Add("VirtualDirectories", (String[])virtualDirs.ToArray(typeof(string)));
}
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
string id = GetResultObjectDN(result);
ExchangeLog.LogEnd("CreateOfflineAddressBook");
return id;
Which is a proper code for exchange 2013 (i can also confirm it works on my exchange servers/ all deployments i did).