您好我正在编写PS脚本以将邮箱大小限制到一个限制,并在超出此限制时向用户发送电子邮件。
我已经准备好了像这样的Size变量:
$Size=Get-MailboxStatistics -Identity $_.samaccountname | Select-Object @{n="TotalItemSize";e={($_.totalitemsize -split " \(")[0]}}
我得到类似的东西:
"samaccountname" @{TotalItemSize=1.991 GB}
我有两个问题:
提前致谢。
答案 0 :(得分:2)
查看$a
$a = (Get-MailboxStatistics -Identity jean-paul.blanc).TotalItemSize
$a | get-member
您可以看到它包含的属性值为Microsoft.Exchange.Data.ByteQuantifiedSize
现在看看Microsoft documentation,你可以找到你正在寻找的方法Tobytes()
,这样你就可以写下:
$a.value.ToBytes()
或在你的情况下:
$size = (Get-MailboxStatistics -Identity "Your user identity").TotalItemSize.value.Tobytes()
编辑:
如果您只有字符串,请说“34.01 MB(35,666,338字节)”
您可以使用以下方法重建对象:
$a = [Microsoft.Exchange.Data.ByteQuantifiedSize]::parse("34.01 MB (35,666,338 bytes)")
答案 1 :(得分:1)
这将为您提供int:
的大小$Size=
Get-MailboxStatistics -Identity $_.samaccountname |
Select-Object -ExpandProperty totalitemsize
$Size = $Size -replace '^.+\((.+\))','$1' -replace '\D' -as [int]
我使用它,如果你想要一个int GB值,则除以1GB。较小尺寸的邮箱可以返回MB甚至KB。从实际的字节数开始更容易并自己进行转换,而不是解析可能返回的所有可能的字符串格式。
但是如果您在邮箱上设置了IssueWarningQuota,系统会在超过该配额时每天自动开始向他们发送一封电子邮件。
编辑:还有一些对象方法可用于获取各种格式的字节计数(如ToBytes())。只要您在实际的EMS shell中,这些工作正常。如果您尝试在隐式远程会话中使用相同的脚本,它将失败,因为现在您正在使用反序列化的对象,并且您不再拥有这些方法。字符串解析方法不像"纯"使用对象方法,但它可以在这些环境之间移植。
答案 2 :(得分:0)
您可以将十进制转换为int(使用舍入),方法是将其转换为[int64]
:
[int64]$val = 1.991
或者,如果您要向下舍入,可以使用[math
:
[math]::floor(1.991)