2016-06-24 41 views
1

早上人们,以及英国人感到悲伤的一天。将Get-MailboxFolderStatistics文件夹大小更改为MB

无论如何,我试图让MailboxFolderStatisticsFolderSize MB。

以下行:

Get-MailboxFolderStatistics Joe.Bloggs | 
    Where-Object { $_.FolderPath -ne "/Deletions" } | 
    Select-Object FolderPath, @{ N = "FolderSize (MB)"; E = { $_.FolderSize.ToMB() } } 

工作正常,当我使用Exchange命令行管理程序。

但是,如果我使用远程PS会话进入我的Exchange箱之一,我没有得到任何东西FolderSize

任何想法?

+0

如果打破这种下降到各个命令表示,做第一个('获取-MailboxFolderStatistics Joe.Bloggs' )给你一个结果? – sodawillow

+0

Hi Sodawillow 确实如此。如果我做 Get-mailboxFolderStatistics Joe.Bloggs |选择FolderPath,Foldersize 我得到的文件夹路径和FolderSize在“2.364 MB(2,478,818字节)”格式 –

回答

1

这是因为您在服务器上运行的Exchange命令行管理程序包含一个名为Microsoft.Exchange.Data.ByteQuantifiedSize的类型,该类型通过远程处理转换为System.String。前者公开ToMB()方法,后者不公开。

我已经写一种变通方法,但也许还有一个更简单和/或更漂亮方法:

Get-MailboxFolderStatistics Joe.Bloggs | 
    Where-Object { $_.FolderPath -ne "/Deletions" } | 
    Select-Object FolderPath, @{ 
     N = "FolderSize (MB)"; 
     E = { 
      "{0:N2}" -f ((($_.FolderSize -replace "[0-9\.]+ [A-Z]* \(([0-9,]+) bytes\)","`$1") -replace ",","")/1MB) 
     } 
    } 

这使用正则表达式来转动难看的字符串(例如:3.712 KB (3,801 bytes))为可用的号码。在我的系统,不是一个有效的数字分组符号,所以我不得不从字符串中删除它。

+0

您先生,是英雄。 谢谢。作品一种享受 –

0

您可以使用以下行来获得$ _。FolderSize在[小数]

Select-Object @{ 
N = "FS_MB"; 
     E = { 
      [math]::round(([decimal](($_.FolderSize -replace "[0-9\.]+ [A-Z]* \(([0-9,]+) bytes\)","`$1") -replace ",","")/1MB),2) 
     } 
}