客户场景:为很多用户单独配置过邮箱配额,想重新规划,现需要导致所有用户实际容量清单
实现方式:直接上代码
#加载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
}
$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
输出结果:
与预期对比:
结论:如果为用户配置了不限制容量,则不能正常获取(客户实际环境中仅为董事长有配置无限制,手动修正,符合客户需求),欢迎帮解决此bug
Update:
客户提出了几点疑问:
1. 这个结果我无法看出哪些用户是有手动配置过的
2. 我不知道用户使用了多少,用了多少空间
3. 需要最后登录时间
4. 我有很多Mail Server,如果我只想获取一台怎么办?
5. 我在C盘打开的这个脚本,但这个脚本实际位置在D盘,这个输出文件输出到了C盘怎么办?需要输出到脚本所在的目录
针对以上,优化了脚本:
$output += $Temp
}
}
#$output[1..$output.count]
$output[1..$output.count] | Export-Csv $outfile -NoTypeInformation -Encoding UTF8 -Force
欢迎补充
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。