Exchange2013 Creating org public folders when creating organization and interface for set DefaultPublicFolderMailbox

This commit is contained in:
dev_amdtel 2014-10-24 06:48:51 +04:00
parent b3dc88fe86
commit 2f3c726b69
7 changed files with 245 additions and 3 deletions

View file

@ -4460,8 +4460,6 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("CheckOrganizationPublicFolderMailbox");
}
private void CheckOrganizationRootFolder(Runspace runSpace, string folder, string user, string orgCanonicalName, string organizationId)
{
ExchangeLog.LogStart("CheckOrganizationRootFolder");
@ -4486,6 +4484,38 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("CheckOrganizationRootFolder");
}
public string CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
{
ExchangeLog.LogStart("AddOrganizationRootPublicFolder");
string res = null;
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
// default public folder
string orgCanonicalName = ConvertADPathToCanonicalName(organizationDistinguishedName);
//create organization public folder mailbox if required
CheckOrganizationPublicFolderMailbox(runSpace, orgCanonicalName, organizationId, organizationDomain);
//create organization root folder if required
CheckOrganizationRootFolder(runSpace, organizationId, securityGroup, orgCanonicalName, organizationId);
res = orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId);
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("AddOrganizationRootPublicFolder");
return res;
}
private string AddPublicFolder(Runspace runSpace, string name, string path, string mailbox)
{
ExchangeLog.LogStart("CreatePublicFolder");
@ -5228,6 +5258,50 @@ namespace WebsitePanel.Providers.HostedSolution
return size;
}
public bool SetDefaultPublicFolderMailbox(string id, string organizationId, string organizationDistinguishedName, out string oldValue, out string newValue)
{
ExchangeLog.LogStart("SetDefaultPublicFolderMailbox");
bool res = false;
oldValue = null;
newValue = null;
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
Command cmd = new Command("Get-Mailbox");
cmd.Parameters.Add("Identity", id);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
oldValue = ObjToString(GetPSObjectProperty(result[0], "DefaultPublicFolderMailbox"));
}
string orgCanonicalName = ConvertADPathToCanonicalName(organizationDistinguishedName);
newValue = orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId);
if (newValue != oldValue)
{
cmd = new Command("Set-Mailbox");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("DefaultPublicFolderMailbox", newValue);
}
res = true;
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("SetDefaultPublicFolderMailbox");
return res;
}
#endregion
#region Address Lists (GAL, AL, RAL, OAB, ABP)