【问题标题】:Exchange Get-MailboxFolderStatistics FolderSize to MBExchange Get-MailboxFolderStatistics FolderSize 为 MB
【发布时间】:2016-10-26 22:53:25
【问题描述】:

早安,成为英国人是多么悲伤的一天。

无论如何,我正在尝试将MailboxFolderStatisticsFolderSize 转换为MB。

下面一行:

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

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

但是,如果我在我的一个 Exchange 盒子中使用远程 PS 会话,我将无法获得 FolderSize 的任何信息。

有什么想法吗?

【问题讨论】:

  • 如果您将其分解为单个命令,第一个 (Get-MailboxFolderStatistics Joe.Bloggs) 是否会给您一个结果?
  • 嗨 Sodawillow 是的。如果我做 Get-mailboxFolderStatistics Joe.Bloggs |选择 FolderPath,Foldersize 我得到了“2.364 MB(2,478,818 字节)”格式的文件夹路径和 FolderSize

标签: powershell exchange-server powershell-remoting


【解决方案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))转换为可用的数字。在我的系统上,, 不是有效的数字分组符号,所以我也必须从字符串中删除它。

【讨论】:

  • 你先生,是个英雄。谢谢你。工作一种享受
【解决方案2】:

您可以使用以下几行来获取以 [十进制] 表示的 $_.FolderSize

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

【讨论】:

    【解决方案3】:

    通常在查看文件夹大小时,希望按大小降序对它们进行排序。为了实现这一点,我们需要知道以字节为单位的 FolderAndSubfolderSize 并将其存储在 bigint 属性中,而不是 System.String将 Bytes 转换为 Kb、Mb、Gb 不是火箭科学,所以我不会在这里讨论。

    内联语法,用于动态添加新属性 FolderAndSubfolderSizeBytes(为了便于阅读,我使用了反引号将其分成几行

    Get-EXOMailbox -Identity user.name@domain.com`
    | Get-EXOMailboxFolderStatistics `
    | Select Name,FolderAndSubfolderSize,@{`
        name="FolderAndSubfolderSizeBytes";`
        expression={((($_.FolderAndSubfolderSize -replace '^(.*\()(.*)(\sbytes\))$','$2').Replace(',','')) -as [bigint])}} `
    | Sort-Object -Property FolderAndSubfolderSizeBytes -Descending | ft
    

    长手为变量对象添加新属性以供以后重用

    $mb = Get-EXOMailbox -Identity user.name@domain.com | Get-EXOMailboxFolderStatistics
    foreach ($folder in $mb) {
        $folder | Add-Member -NotePropertyName FolderSizeBytes -NotePropertyValue ((($folder.FolderSize -replace '^(.*\()(.*)(\sbytes\))$','$2').Replace(',','')) -as [bigint])
        $folder | Add-Member -NotePropertyName FolderAndSubfolderSizeBytes -NotePropertyValue ((($folder.FolderAndSubfolderSize -replace '^(.*\()(.*)(\sbytes\))$','$2').Replace(',','')) -as [bigint])
    }
    $mb | Select Name,FolderPath,FolderAndSubfolderSize,FolderAndSubfolderSizeBytes | Sort-Object -Property FolderAndSubfolderSizeBytes -Descending | ft
    

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 2019-02-10
      • 2021-11-28
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多