今天有客户要求需要获取邮箱用户的一些基本信息,其中一项是邮箱容量使用情况。需要使用Powershell来批量获取这些信息,于是乎我开始着手编写Powershell脚本。

我了解到微软官网https://gallery.technet.microsoft.com/scriptcenter/Exchange-2010-2013-2016-cee5e558。提供了这个脚本,脚本实现的功能和我需要实现的功能大体一致,我也不用去费劲儿从头编写代码了。下面我将我改造后的脚本分享给大家。

1、脚本实现的功能

脚本邮箱用户的脚本批量去获取邮箱用户的信息(显示名称、登录名、OU信息、邮箱配额、邮箱邮件数量、邮箱已使用大小、邮箱地址、邮箱容量使用情况等信息)

2、脚本运行环境

目前该脚本可以用来获取Exchange 2010/2013。至于Exchange 2016目前还未进行测试。

3、修复了原脚本中的如下不足之处:

1)、修复显示名称中包含中文时显示乱码问题。

2)、添加了判断当用户邮箱设置了自定义配额且自定义配额设定为无限制时,脚本自动判断条件。

3)、添加了计算用户邮箱使用量(百分比)。

4)、添加了用户邮箱配额设定为数据库配额,且数据库配额设定为无限制时,脚本自动判断条件。

4、脚本内容:

#--------------------------------------------下面为脚本正文内容,直接复制如下内容,然后保存为.ps1-------------------------------------------------

Param(  
    [Parameter(Mandatory = $true)]    
    [string] $CSVPath    
)

$Mailboxes = Get-Mailbox -ResultSize Unlimited

$CSV = @()  
foreach($Mailbox in $Mailboxes)    
    {    
        $MailboxStats = (Get-MailboxStatistics $Mailbox -WarningAction SilentlyContinue )

if ($mailbox.UseDatabaseQuotaDefaults -eq $true)  
            {    
                if((Get-MailboxDatabase $mailbox.Database).ProhibitSendReceiveQuota.Value -eq $null)    
                    {    
                        $ProhibitSendReceiveQuota=0    
                    }    
                if((Get-MailboxDatabase $mailbox.Database).ProhibitSendReceiveQuota.Value -ne $null)    
                    {    
                       $ProhibitSendReceiveQuota=(Get-MailboxDatabase $mailbox.Database).ProhibitSendReceiveQuota.Value.ToMB()    
                    }    
            }    
        if ($mailbox.UseDatabaseQuotaDefaults -eq $false)    
            {    
                if($mailbox.ProhibitSendReceiveQuota.Value -eq $null)    
                    {    
                        $ProhibitSendReceiveQuota=0    
                    }    
                if($mailbox.ProhibitSendReceiveQuota.Value  -ne $null)    
                    {    
                        $ProhibitSendReceiveQuota=$mailbox.ProhibitSendReceiveQuota.Value.ToMB()    
                    }               
            }

$CSVLine = New-Object System.Object  
        $CSVLine | Add-Member -Type NoteProperty -Name "DisplayName" -Value $Mailbox.DisplayName    
        $CSVLine | Add-Member -Type NoteProperty -Name "UserName" -Value $Mailbox.SamAccountName    
        $CSVLine | Add-Member -Type NoteProperty -Name "PrimarySMTP" -Value $Mailbox.WindowsEmailAddress    
        $CSVLine | Add-Member -Type NoteProperty -Name "OrganizationalUnit" -Value $Mailbox.OrganizationalUnit    
        $CSVLine | Add-Member -Type NoteProperty -Name "EmailAliases" -Value ($Mailbox.EmailAddresses.SmtpAddress -join "; ")    
        if($MailboxStats)    
            {    
                if($ProhibitSendReceiveQuota -eq 0)    
                    {    
                        $CSVLine | Add-Member -Type NoteProperty -Name "TotalItemSizeInMB" -Value $MailboxStats.TotalItemSize.Value.ToMB()    
                        $CSVLine | Add-Member -Type NoteProperty -Name "ItemCount" -Value $MailboxStats.ItemCount    
                        $CSVLine | Add-Member -Type NoteProperty -Name "StorageLimitStatus" -Value $Mailbox.StorageLimitStatus    
                        $CSVLine | Add-Member -Type NoteProperty -Name "UseDatabaseQuotaDefaults" -Value $Mailbox.UseDatabaseQuotaDefaults    
                        $CSVLine | Add-Member -Type NoteProperty -Name "ProhibitSendReceiveQuotaInMB" -Value "此用户无配额限制"    
                        $CSVLine | Add-Member -Type NoteProperty -Name '邮箱使用情况(%)' -Value "此用户无配额限制"    
                    }    
                if($ProhibitSendReceiveQuota -ne 0)    
                    {    
                         $CSVLine | Add-Member -Type NoteProperty -Name "TotalItemSizeInMB" -Value $MailboxStats.TotalItemSize.Value.ToMB()    
                         $CSVLine | Add-Member -Type NoteProperty -Name "ItemCount" -Value $MailboxStats.ItemCount    
                         $CSVLine | Add-Member -Type NoteProperty -Name "StorageLimitStatus" -Value $Mailbox.StorageLimitStatus    
                         $CSVLine | Add-Member -Type NoteProperty -Name "UseDatabaseQuotaDefaults" -Value $Mailbox.UseDatabaseQuotaDefaults    
                         $CSVLine | Add-Member -Type NoteProperty -Name "ProhibitSendReceiveQuotaInMB" -Value $ProhibitSendReceiveQuota    
                         $UsedSpace=[int]($MailboxStats.TotalItemSize.Value.ToMB()*100/$ProhibitSendReceiveQuota)    
                         $CSVLine | Add-Member -Type NoteProperty -Name '邮箱使用情况(%)' -Value ("$UsedSpace"+"%")    
                    }    
             }    
        $CSV+=$CSVLine    
    }

$CSV | Sort TotalItemSize -Descending | Export-Csv -NoTypeInformation $CSVPath -Encoding Unicode

#-------------------------------------脚本内容结束------------------------------------------------------------------------------------------------------------------

5、脚本使用方法

将脚本内容复制后另存为.ps1格式(例如:New-MailboxSizeReport-02.ps1。在Exchange 上使用Exchange Powershell执行该脚本,如图。

由于时间关系没有对脚本的执行效率进行优化,有兴趣的童鞋可以去研究研究。

转载于:https://blog.51cto.com/jialt/1768198

使用Powershell批量获取Exchange 2013邮箱用户容量使用量相关推荐

  1. iphone(苹果)手机登陆Exchange 2013邮箱帐号的配置

    iphone(苹果)手机登陆Exchange 2013邮箱帐号的配置         本博文介绍iphone(苹果)手机配置Exchange 2013邮箱帐号,直接看步骤: 1.打开iphone手机的 ...

  2. DPM 2012 R2恢复Exchange 2013单用户邮箱

    实验拓扑图: 一.发送测试邮件: 1.在实验之前,先向administrator的邮箱中发送一封测试邮件: 二.安装代理软件: 1.在exchange 2013服务器上安装DPM代理(省略:可参照前篇 ...

  3. Exchange 2013 邮箱管理

    本节简单介绍下,Exchange 2013中邮箱的各种管理方式. 1.创建邮箱 2.查看邮箱属性 3.邮箱委托:可配置发送方式.代表发送.完全访问等权限.这里配置代表发送来做演示. 4.创建资源邮箱 ...

  4. exchange 2013 邮箱服务器主要服务功能概览

    邮箱服务器主要负责处理邮件的服务为: 1.传输提交服务 msexchangesubmission 2.传输服务 msexchangetransport 3.传输投递服务 msexchangedeliv ...

  5. Exchange误删除邮箱用户后恢复账户问题

    对于exchange管理员来说,肯定存在不小心删错账户的时候,出现这类情况时我们一般都是通过disconnected mailbox 来恢复我们误删的账户,但是我们可能会遇到一种情况,就是当我们在AD ...

  6. 将公用文件夹从Exchange2010迁移到 Exchange 2013

    将公用文件夹从Exchange2010迁移到 Exchange 2013 本主题介绍如何将您的公用文件夹从 Exchange Server 2010 SP3迁移到同一个林中的 Exchange Ser ...

  7. Exchange 2013 就地发现

    如果您的组织遵循法律发现要求(与组织策略.合规性或诉讼相关),Microsoft Exchange Server 2013 就地电子数据展示可以帮助您对 Exchange 2013 邮箱内的相关内容执 ...

  8. Exchange 2013 就地保留

    当存在诉讼的合理预期时,需要组织保留与事实相关的以电子方式存储的信息 (ESI),包括电子邮件. 这种预期通常会在知道事实的细节之前发生,并且保留内容通常很广泛. 组织可能需要保留与特定主题相关的所有 ...

  9. exchange 2013 批量启用AD域中已存账号的邮箱(转)

    第一种 1. 获取OU Beijing(包含子OU)下所有的user类型账户 打开 Exchange Management Shell get-user –OrganizationalUnit OU名 ...

最新文章

  1. PHP的addslashes 函数详解
  2. python详细安装步骤-Pycharm及python安装详细教程(图解)
  3. 大数据:Hive和Hbase的区别于优势
  4. SAP Classification(物料特性)
  5. 进击的Android Hook 注入术《四》
  6. python网络编程爬虫_Python爬虫--网络编程
  7. java 读取properties文件
  8. 一键清除 打印机内无法清除作业
  9. Redis源码解析(1)——源码目录介绍
  10. 记一次艰辛的vsftpd搭建,排错过程
  11. [BJOI2017]开车
  12. 自主安全国产虚拟化平台CNware
  13. 阿里矢量图库的正确打开方式
  14. 椭球面的c语言方程,喷油嘴椭球面手工编程方法的实现
  15. java的duplicate用法_Java ByteBuffer duplicate()用法及代码示例
  16. Android5.0新特性:RecyclerView实现上拉加载更多
  17. 数据库 之 round函数
  18. 3000亿美元的东南亚数码经济为企业创造增长机会,也带来更大的欺诈风险 | 美通社头条...
  19. Java毕设项目会议室预约管理系统(java+VUE+Mybatis+Maven+Mysql)
  20. JS节点操作、节点层级获取

热门文章

  1. Creative media发表了Flash memory player「ZEN Mozaic」的存储增量模式
  2. 在oracle中的日期类型与String类型
  3. java数据类型的站位_Java 数据类型在实际开发中应用
  4. 把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...
  5. Linux网络管理实 验 指 导
  6. 一些关于爱情的心理学事实
  7. 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务
  8. 作者:李廉(1951-),男,合肥工业大学计算机与信息学院教授
  9. 【VB.NET】测验题目Quiz4
  10. 【数据库系统】形式化查询语言の关系代数