You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell提取Exchange邮箱大小数值用于共享邮箱转换校验

解决Exchange Online邮箱转共享邮箱的容量检查问题

核心思路

Get-MailboxStatistics返回的TotalItemSize是结构化的ByteQuantifiedSize对象,无需解析字符串,直接通过对象方法就能获取GB单位的数值,这种方式更稳定可靠,不会因输出格式变化失效。

完整脚本实现

# 读取目标用户UPN
$upn = Read-Host -Prompt "Input the UPN of the user you would like to convert. ex. User@Example.com
->"

try {
    # 获取邮箱统计信息
    $mailboxStats = Get-MailboxStatistics $upn -ErrorAction Stop
    
    # 将总容量转换为GB并保留1位小数
    $totalSizeGB = [math]::Round($mailboxStats.TotalItemSize.Value.ToGB(), 1)
    
    # 容量检查逻辑
    if ($totalSizeGB -lt 50) {
        # 执行转换为共享邮箱操作
        Set-Mailbox $upn -Type Shared -ErrorAction Stop
        Write-Host "成功将用户邮箱 $upn 转换为共享邮箱,当前容量:$totalSizeGB GB" -ForegroundColor Green
    } else {
        Write-Host "转换失败:邮箱 $upn 容量为 $totalSizeGB GB,超过50GB限制" -ForegroundColor Red
    }
} catch {
    Write-Host "操作出错:$_" -ForegroundColor Red
}

关键代码说明

  • $mailboxStats.TotalItemSize.Value.ToGB():直接将字节数转换为GB单位的数值,跳过字符串解析步骤
  • [math]::Round(..., 1):保留1位小数,和你看到的输出格式保持一致
  • try/catch块:处理用户不存在、权限不足等异常场景

替代方案(字符串解析,不推荐)

如果因环境限制必须解析字符串,可通过正则提取数值:

$mailboxsize = Get-MailboxStatistics $upn | Select-Object -ExpandProperty TotalItemSize
$sizeMatch = [regex]::Match($mailboxsize, '(\d+\.\d+) GB')
if ($sizeMatch.Success) {
    $totalSizeGB = [double]$sizeMatch.Groups[1].Value
    # 后续判断逻辑同上述脚本
}

注意:字符串解析依赖固定输出格式,若Exchange更新显示规则会直接失效,优先推荐对象方法。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:42:28