有更简单的方法来编码吗?

时间:2015-02-25 10:48:39

标签: regex powershell exchange-server-2010

通过使用这个小组的帮助,我开始了解正则表达式。

我有这个脚本,它占用了一个交换邮箱的大小,将字节大小拆分为一个数字,并将其格式化为3个小数位。

这一切都很好,我有我想要的答案,但因为我是正则表达式的新手,我想知道是否有更好的方法,因为它看起来很乱。

    $size=Get-MailboxStatistics -id $user| Select itemcount,totalitemsize
    $size = $size.TotalItemSize
    $mbxsize=$size -replace '[.*(]',''
    $mbxsize=$mbxsize -replace '\d*\s\w+\s',''
    $mbxsize=$mbxsize -replace '[bytes)]',''
    $mbxsize=$mbxsize -replace ',',''
    $mbxsize="{0:N3}" -f ($mbxsize/1024/1024)

TIA

安迪

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式直接将totalitemsize值转换为MB:

$size= Get-MailboxStatistics -id $user | 
     Select itemcount, @{n='totalitemsize';e={$_.totalitemsize.value.toMB()}}

答案 1 :(得分:0)

你可以简单地将正则表达式简化为字节数(用逗号)来表示:

-replace '.+\(([0-9,]+)\s.+','$1' 

并且您可以链接替换运算符,因此您可以将整个过程简化为:

$mbxsize= $size -replace '.+\(([0-9,]+)\s.+','$1' -replace ','
$mbxsize="{0:N3}" -f ($mbxsize/1MB)