From 68fa24ff35a5595a7600372d9a8b0afea1b9d5e2 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 18 Sep 2012 22:50:44 +0400 Subject: [PATCH] Fixed: Error when calculating diskspace and no public folder database available --- .../Exchange2007.cs | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index ba51c9ce..fd32052a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -1374,30 +1374,37 @@ namespace WebsitePanel.Providers.HostedSolution long size = 0; - Command cmd = new Command("Get-PublicFolderStatistics"); - cmd.Parameters.Add("Identity", folder); - if (!string.IsNullOrEmpty(PublicFolderServer)) - cmd.Parameters.Add("Server", PublicFolderServer); + Command cmd = new Command("Get-PublicFolderDatabase"); Collection result = ExecuteShellCommand(runSpace, cmd); - if (result != null && result.Count > 0) - { - PSObject obj = result[0]; - Unlimited totalItemSize = - (Unlimited)GetPSObjectProperty(obj, "TotalItemSize"); - size += ConvertUnlimitedToBytes(totalItemSize); - } + if (result != null && result.Count > 0) + { + cmd = new Command("Get-PublicFolderStatistics"); + cmd.Parameters.Add("Identity", folder); + if (!string.IsNullOrEmpty(PublicFolderServer)) + cmd.Parameters.Add("Server", PublicFolderServer); + result = ExecuteShellCommand(runSpace, cmd); + if (result != null && result.Count > 0) + { + PSObject obj = result[0]; + Unlimited totalItemSize = + (Unlimited)GetPSObjectProperty(obj, "TotalItemSize"); + size += ConvertUnlimitedToBytes(totalItemSize); + } - cmd = new Command("Get-PublicFolder"); - cmd.Parameters.Add("Identity", folder); - cmd.Parameters.Add("GetChildren", new SwitchParameter(true)); - if (!string.IsNullOrEmpty(PublicFolderServer)) - cmd.Parameters.Add("Server", PublicFolderServer); - result = ExecuteShellCommand(runSpace, cmd); - foreach (PSObject obj in result) - { - string id = ObjToString(GetPSObjectProperty(obj, "Identity")); - size += CalculatePublicFolderDiskSpace(runSpace, id); - } + cmd = new Command("Get-PublicFolder"); + cmd.Parameters.Add("Identity", folder); + cmd.Parameters.Add("GetChildren", new SwitchParameter(true)); + if (!string.IsNullOrEmpty(PublicFolderServer)) + cmd.Parameters.Add("Server", PublicFolderServer); + result = ExecuteShellCommand(runSpace, cmd); + foreach (PSObject obj in result) + { + string id = ObjToString(GetPSObjectProperty(obj, "Identity")); + size += CalculatePublicFolderDiskSpace(runSpace, id); + } + } + else + size = 0; ExchangeLog.LogEnd("CalculatePublicFolderDiskSpace"); return size; }