PowerShell Exchange,更简单的方法来计算在达到配额之前剩余的可用 space?

PowerShell Exchange, easier way to work out available space left before hitting quota?

下午好,

我正在尝试计算出在用户达到 ProhibitSendQuota 之前,用户邮箱中剩余的可用 space MB。

我有以下可行的方法,但实现它的方法似乎非常冗长。

注意:我正在使用远程 PowerShell 会话。我无法使用 Exchange 管理工具来实现此目的,否则我会使用 .ToMB()

X2_MBX      = Get-Mailbox X2_USER_AD.SamAccountName
X2_MBXSTATS = Get-MailboxStatistics X2_USER_AD.SamAccountName

$a = ( ( ( ( X2_MBX.ProhibitSendQuota | Out-String ).Split( "(" )[1] ) -replace "," , "" ).Split( ")" )[0] -replace " bytes" , "" ) - ( ( ( ( X2_MBXSTATS.TotalItemSize.Value | Out-String ).Split( "(" )[1] ) -replace "," , "" ).Split( ")" )[0] -replace " bytes" , "" )

[math]::round( ( $a / 1048576 ) ,2 )

就像我说的,这似乎有效。如果这是到达那里的一种相当不错的方式,那么我印象深刻,我自己做到了!但绝对显得啰嗦。

我会这样做:

function Remove-UselessText ($inputString) {
    $output = ($inputString -replace "[0-9\.]+ [A-Z]* \(([0-9,]+) bytes\)","`") -replace ",",""
    [int]$output
}

$accountName  = X2_USER_AD.SamAccountName
X2_MBX      = Get-Mailbox $accountName
X2_MBXSTATS = Get-MailboxStatistics $accountName

$freeQuota = (Remove-UselessText X2_MBX.ProhibitSendQuota) - (Remove-UselessText X2_MBXSTATS.TotalItemSize.Value)

"Free quota for $accountName : {0:N2} MB" -f ($freeQuota / 1MB)

这是我的:

X2_MBX      = Get-Mailbox X2_USER_AD.SamAccountName
X2_MBXSTATS = Get-MailboxStatistics X2_USER_AD.SamAccountNam

$Quota = ([int64](X2_MBX.ProhibitSendQuota -split '[\( ]')[3]) 
$MailboxSize = [int64](X2_MBXSTATS.TotalItemSize -split '[\( ]')[3]

"Quota Available {0:N2} GB" -f (($Quota - $MailboxSize) / 1GB)