使用Powershell批量获取Exchange 2013邮箱用户容量使用量
???????? 今天有客戶要求需要獲取郵箱用戶的一些基本信息,其中一項是郵箱容量使用情況。需要使用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邮箱用户容量使用量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (绝对有用)iOS获取UUID,并使用k
- 下一篇: mysql 日期操作 增减天数、时间转换