客戶場景:為很多用戶單獨(dú)配置過郵箱配額,想重新規(guī)劃,現(xiàn)需要導(dǎo)致所有用戶實(shí)際容量清單
實(shí)現(xiàn)方式:直接上代碼
#加載Exchange命令
Add-PSSnapin Microsoft.ex*
#主命令
[array]$output = "" | Select Name,ProhibitSendQuota,DBName
$DBs = Get-MailboxDatabase | Select Name,ProhibitSendQuota
foreach ($DB in $DBs) {
[string]$DBQuota = $DB.ProhibitSendQuota
[string]$DBName = $DB.Name
Write-Host "Database $DBName's quota is $DBQuota"
$Mails = Get-Mailbox -Database $DBName | Select Name,ProhibitSendQuota
foreach ($Mail in $Mails) {
if ($Mail.ProhibitSendQuota -eq "Unlimited") {
[string]$MailQuota = $DBQuota
}
else {
[string]$MailQuota = $Mail.ProhibitSendQuota
}

創(chuàng)新互聯(lián)公司專注于企業(yè)
網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、萬秀網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、
H5網(wǎng)站設(shè)計(jì)、
成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為萬秀等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
$Temp = "" | Select Name,ProhibitSendQuota,DBName
$Temp.Name = $Mail.Name
$Temp.ProhibitSendQuota = $MailQuota
$Temp.DBName = $DBName
#$Temp
$output += $Temp
}
}
$output | Export-Csv MailQuota.csv -NoTypeInformation -Encoding UTF8
輸出結(jié)果:

與預(yù)期對比:

結(jié)論:如果為用戶配置了不限制容量,則不能正常獲?。蛻魧?shí)際環(huán)境中僅為董事長有配置無限制,手動(dòng)修正,符合客戶需求),歡迎幫解決此bug
Update:
客戶提出了幾點(diǎn)疑問:
1. 這個(gè)結(jié)果我無法看出哪些用戶是有手動(dòng)配置過的
2. 我不知道用戶使用了多少,用了多少空間
3. 需要最后登錄時(shí)間
4. 我有很多Mail Server,如果我只想獲取一臺怎么辦?
5. 我在C盤打開的這個(gè)腳本,但這個(gè)腳本實(shí)際位置在D盤,這個(gè)輸出文件輸出到了C盤怎么辦?需要輸出到腳本所在的目錄
針對以上,優(yōu)化了腳本:
- 先直接上腳本
param($Server)
$outfile = $(Split-Path -Parent $MyInvocation.MyCommand.Definition) + "\" + (Get-Date -UFormat "%Y-%m-%d_%H-%M-%S") + ".csv"
Write-Host $outfile
[array]$output = "" | Select Name,DBName,UserQuota,DBQuota,ProhibitSendQuota,TotalItemSize,Use,LastLogonTime
#Select Name,DBName,UserQuota,DBQuota,ProhibitSendQuota,TotalItemSize,Use
Add-PSSnapin Microsoft.ex
if($Server){
$DBs = Get-MailboxDatabase -Server $Server| Select Name,ProhibitSendQuota
} else {
$DBs = Get-MailboxDatabase | Select Name,ProhibitSendQuota
}
foreach ($DB in $DBs) {
[string]$DBQuota = $DB.ProhibitSendQuota
[string]$DBName = $DB.Name
Write-Host "Database $DBName's quota is $DBQuota"
$Mails = Get-Mailbox -Database $DBName -ResultSize unlimited | Select SamaccountName,ProhibitSendQuota
foreach ($Mail in $Mails) {
if ($Mail.ProhibitSendQuota -eq "Unlimited") {
[string]$MailQuota = $DBQuota
}
else {
[string]$MailQuota = $Mail.ProhibitSendQuota
}
$TotalItemSize = Get-MailboxStatistics -Identity $Mail.SamaccountName | select TotalItemSize,LastLogonTime
$TempA = $Mail.ProhibitSendQuota
$Temp = "" | Select Name,DBName,UserQuota,DBQuota,ProhibitSendQuota,TotalItemSize,Use,LastLogonTime
$Temp.Name = $Mail.SamaccountName
$Temp.DBName = $DBName
if ($TempA -eq "Unlimited") {
$Temp.UserQuota = $TempA
} else {
#$Temp.UserQuota = $TempA.replace(" ","").split("(")[0]
$Temp.UserQuota = $($TempA -replace " ").Split("(")[0]
}
$Temp.DBquota = $($DBQuota -replace " ").Split("(")[0]
$Temp.ProhibitSendQuota = $($MailQuota -replace " ").Split("(")[0]
$Temp.TotalItemSize = $($TotalItemSize.TotalItemSize -replace " ").Split("(")[0]
$Temp.Use = ('{0:n2}' -f $($Temp.TotalItemSize / $Temp.ProhibitSendQuota 100)) +'%'
$Temp.LastLogonTime = $TotalItemSize.LastLogonTime
#$Temp
$output += $Temp
}
}
#$output[1..$output.count]
$output[1..$output.count] | Export-Csv $outfile -NoTypeInformation -Encoding UTF8 -Force
- 輸出結(jié)果

- 腳本執(zhí)掃方式
a. 直接執(zhí)行則獲取所有用戶
b. .\xxx.ps1 -Server XX則獲取指定Server上的DB
歡迎補(bǔ)充
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:Powershell獲取Exchange郵箱用戶配額-創(chuàng)新互聯(lián)
分享地址:
http://weahome.cn/article/dodhid.html