Fixed: Error when calculating diskspace and no public folder database available

This commit is contained in:
robvde 2012-09-18 22:50:44 +04:00
parent 6868241a6d
commit 68fa24ff35

View file

@ -1374,30 +1374,37 @@ namespace WebsitePanel.Providers.HostedSolution
long size = 0; long size = 0;
Command cmd = new Command("Get-PublicFolderStatistics"); Command cmd = new Command("Get-PublicFolderDatabase");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd); Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0) if (result != null && result.Count > 0)
{ {
PSObject obj = result[0]; cmd = new Command("Get-PublicFolderStatistics");
Unlimited<ByteQuantifiedSize> totalItemSize = cmd.Parameters.Add("Identity", folder);
(Unlimited<ByteQuantifiedSize>)GetPSObjectProperty(obj, "TotalItemSize"); if (!string.IsNullOrEmpty(PublicFolderServer))
size += ConvertUnlimitedToBytes(totalItemSize); cmd.Parameters.Add("Server", PublicFolderServer);
} result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
PSObject obj = result[0];
Unlimited<ByteQuantifiedSize> totalItemSize =
(Unlimited<ByteQuantifiedSize>)GetPSObjectProperty(obj, "TotalItemSize");
size += ConvertUnlimitedToBytes(totalItemSize);
}
cmd = new Command("Get-PublicFolder"); cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", folder); cmd.Parameters.Add("Identity", folder);
cmd.Parameters.Add("GetChildren", new SwitchParameter(true)); cmd.Parameters.Add("GetChildren", new SwitchParameter(true));
if (!string.IsNullOrEmpty(PublicFolderServer)) if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer); cmd.Parameters.Add("Server", PublicFolderServer);
result = ExecuteShellCommand(runSpace, cmd); result = ExecuteShellCommand(runSpace, cmd);
foreach (PSObject obj in result) foreach (PSObject obj in result)
{ {
string id = ObjToString(GetPSObjectProperty(obj, "Identity")); string id = ObjToString(GetPSObjectProperty(obj, "Identity"));
size += CalculatePublicFolderDiskSpace(runSpace, id); size += CalculatePublicFolderDiskSpace(runSpace, id);
} }
}
else
size = 0;
ExchangeLog.LogEnd("CalculatePublicFolderDiskSpace"); ExchangeLog.LogEnd("CalculatePublicFolderDiskSpace");
return size; return size;
} }