-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750
用户需要统计邮箱用户的具体信息,如登陆名,邮箱地址,公司名,部门等,这些信息可以通过不通的命令查询到,我们如何通过脚本把这些信息汇总到一起,命令如下:
步骤1、在powershell命令行输入如下命令
Add-PSSnapin microsoft.exchange*
$user=Get-User -ResultSize unlimited -RecipientTypeDetails UserMailbox
$userinfo=@()
foreach($i in $user)
{
$mbxstatistics=Get-Mailbox $i.identity|Get-MailboxStatistics
$mbxsarctatistics=if((Get-Mailbox $i.identity).ArchiveDatabase -ne $null) `
{get-mailbox $i.identity -Archive|Get-MailboxStatistics -Archive}
#获取所有启用了存档邮箱的用户信息,如前面不加if判断,会出现运行时提示找不到存档邮箱的报错。
$mbxtotal=Get-Mailbox $i.identity|Select-Object @{n="显示名";e={$_.displayname}},`
@{n="登录名";e={$_.samaccountname}}, `
@{n="邮箱地址";e={$_.PrimarySmtpAddress}}, `
@{n="公司名";e={$i.company}}, `
@{n="部门";e={$i.Department}}, `
@{n="邮箱数量";e={$mbxstatistics.ItemCount}},`
@{n="邮箱大小(MB)";e={$mbxstatistics.TotalItemSize.value.tomb()}},`
@{n="存档邮箱数量";e={$mbxsarctatistics.ItemCount}},`
@{n="存档邮箱大小(MB)";e={$mbxsarctatistics.TotalItemSize.value.tomb()}},`
@{n="挂载的服务器名";e={$mbxstatistics.ServerName}},`
@{n="最后一次登录时间";e={$mbxstatistics.LastLogonTime}},`
@{n="数据库名";e={$mbxstatistics.DatabaseName}}
$userinfo+=$mbxtotal #把每次运行获取到的用户信息存入到userinfo
}
$userinfo #把查询到的信息在屏幕显示出来
$userinfo|Export-Csv -Path c:\mbxinfo.csv -NoTypeInformation -Encoding utf8 #把用户信息导出到c:\mbxinfo.csv
步骤2、导出的信息如下截图,至此,我们需要的信息就已经全部查询并导出到csv表格
思路二:我们可以继续优化,获取更多的信息,比如手机,座机等,还有获取邮箱的使用情况
Add-PSSnapin microsoft.exchange* $user=Get-User -ResultSize unlimited -RecipientTypeDetails UserMailbox $userinfo=@() foreach($i in $user) { $mbxstatistics=Get-Mailbox $i.identity|Get-MailboxStatistics $mbxsarctatistics=if((Get-Mailbox $i.identity).ArchiveDatabase -ne $null) ` {get-mailbox $i.identity -Archive|Get-MailboxStatistics -Archive} #获取所有启用了存档邮箱的用户信息,如前面不加if判断,会出现运行时提示找不到存档邮箱的报错。 if((Get-Mailbox $i.identity).UseDatabaseQuotaDefaults) ` { $mbxtotal=Get-Mailbox $i.identity|Select-Object @{n="显示名";e={$_.displayname}},` @{n="登录名";e={$_.samaccountname}}, ` @{n="邮箱地址";e={$_.PrimarySmtpAddress}}, ` @{n="公司名";e={$i.company}}, ` @{n="部门";e={$i.Department}}, ` @{n="邮件数量";e={$mbxstatistics.ItemCount}},` @{n="已用空间(MB)";e={$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="剩余空间(MB)";e={$mbxstatistics.DatabaseProhibitSendQuota.value.tomb()-$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="邮箱配额(MB)";e={$mbxstatistics.DatabaseProhibitSendQuota.value.tomb()}},` @{n="存档邮箱数量";e={$mbxsarctatistics.ItemCount}},` @{n="存档邮箱大小(MB)";e={$mbxsarctatistics.TotalItemSize.value.tomb()}},` @{n="挂载的服务器名";e={$mbxstatistics.ServerName}},` @{n="最后一次登录时间";e={$mbxstatistics.LastLogonTime}},` @{n="数据库名";e={$mbxstatistics.DatabaseName}},` @{n="手机号码";e={(Get-User $i.Identity).MobilePhone}},` @{n="办公室";e={(Get-User $i.Identity).office}},` @{n="工作电话";e={(Get-User $i.Identity).Phone}},` @{n="职务";e={(Get-User $i.Identity).title}} } else { $mbxtotal=Get-Mailbox $i.identity|Select-Object @{n="显示名";e={$_.displayname}},` @{n="登录名";e={$_.samaccountname}}, ` @{n="邮箱地址";e={$_.PrimarySmtpAddress}}, ` @{n="公司名";e={$i.company}}, ` @{n="部门";e={$i.Department}}, ` @{n="邮件数量";e={$mbxstatistics.ItemCount}},` @{n="已用空间(MB)";e={$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="剩余空间(MB)";e={(get-mailbox $i.identity).ProhibitSendQuota.value.tomb()-$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="邮箱配额(MB)";e={(get-mailbox $i.identity).ProhibitSendQuota.value.tomb()}},` @{n="存档邮箱数量";e={$mbxsarctatistics.ItemCount}},` @{n="存档邮箱大小(MB)";e={$mbxsarctatistics.TotalItemSize.value.tomb()}},` @{n="挂载的服务器名";e={$mbxstatistics.ServerName}},` @{n="最后一次登录时间";e={$mbxstatistics.LastLogonTime}},` @{n="数据库名";e={$mbxstatistics.DatabaseName}},` @{n="手机号码";e={(Get-User $i.Identity).MobilePhone}},` @{n="办公室";e={(Get-User $i.Identity).office}},` @{n="工作电话";e={(Get-User $i.Identity).Phone}},` @{n="职务";e={(Get-User $i.Identity).title}} } $userinfo+=$mbxtotal #把每次运行获取到的用户信息存入到userinfo } $userinfo #把查询到的信息在屏幕显示出来 $userinfo|Export-Csv -Path c:\mbxinfo.csv -NoTypeInformation -Encoding utf8 #把用户信息导出到c:\mbxinfo.csv $UserName = #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From -To -Subject "全员邮箱使用情况汇总" -Credential $cred -SmtpServer "mail.yuntcloud.com" -Attachments "c:\mbxinfo.csv" -Encoding ([System.Text.Encoding]::UTF8)
思路三、统计邮箱情况并将报警信息发送到用户及管理员组
Add-PSSnapin microsoft.exchange* $user=Get-User -ResultSize unlimited -RecipientTypeDetails UserMailbox $userinfo=@() foreach($i in $user) { $mbxstatistics=Get-Mailbox $i.identity|Get-MailboxStatistics $mbxsarctatistics=if((Get-Mailbox $i.identity).ArchiveDatabase -ne $null) ` {get-mailbox $i.identity -Archive|Get-MailboxStatistics -Archive} #获取所有启用了存档邮箱的用户信息,如前面不加if判断,会出现运行时提示找不到存档邮箱的报错。 if((Get-Mailbox $i.identity).UseDatabaseQuotaDefaults) ` { $mbxtotal=Get-Mailbox $i.identity|Select-Object @{n="显示名";e={$_.displayname}},` @{n="登录名";e={$_.samaccountname}}, ` @{n="邮箱地址";e={$_.PrimarySmtpAddress}}, ` @{n="公司名";e={$i.company}}, ` @{n="部门";e={$i.Department}}, ` @{n="邮件数量";e={$mbxstatistics.ItemCount}},` @{n="已用空间(MB)";e={$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="剩余空间(MB)";e={$mbxstatistics.DatabaseProhibitSendQuota.value.tomb()-$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="邮箱配额(MB)";e={$mbxstatistics.DatabaseProhibitSendQuota.value.tomb()}},` @{n="存档邮箱数量";e={$mbxsarctatistics.ItemCount}},` @{n="存档邮箱大小(MB)";e={$mbxsarctatistics.TotalItemSize.value.tomb()}},` @{n="挂载的服务器名";e={$mbxstatistics.ServerName}},` @{n="最后一次登录时间";e={$mbxstatistics.LastLogonTime}},` @{n="数据库名";e={$mbxstatistics.DatabaseName}},` @{n="手机号码";e={(Get-User $i.Identity).MobilePhone}},` @{n="办公室";e={(Get-User $i.Identity).office}},` @{n="工作电话";e={(Get-User $i.Identity).Phone}},` @{n="职务";e={(Get-User $i.Identity).title}} if("{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -ge 0.1 -and "{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -lt 0.2) ` { $UserName = "[email protected]" #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From "[email protected]" -to (Get-Mailbox $i.identity).PrimarySmtpAddress -Cc "[email protected]" -Subject ($i.DisplayName+"的邮箱剩余空间不足20%,请清理您的邮箱,否则将可能无法发送邮件") -Credential $cred ` -SmtpServer "mail.yuntcloud.com" -BodyAsHtml ($i.DisplayName+"的邮箱剩余空间不足20%,请清理您的邮箱,否则将可能无法发送邮件") -Encoding ([System.Text.Encoding]::UTF8) } elseif("{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -lt 0.1) ` { $UserName = "[email protected]" #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From "[email protected]" -to (Get-Mailbox $i.identity).PrimarySmtpAddress -Cc "[email protected]" -Subject ($i.DisplayName+"的邮箱剩余空间不足10%,请清理您的邮箱,否则将可能无法收发邮件") -Credential $cred ` -SmtpServer "mail.yuntcloud.com" -BodyAsHtml ($i.DisplayName+"的邮箱剩余空间不足10%,请清理您的邮箱,否则将可能无法收发邮件") -Encoding ([System.Text.Encoding]::UTF8) } } else { $mbxtotal=Get-Mailbox $i.identity|Select-Object @{n="显示名";e={$_.displayname}},` @{n="登录名";e={$_.samaccountname}}, ` @{n="邮箱地址";e={$_.PrimarySmtpAddress}}, ` @{n="公司名";e={$i.company}}, ` @{n="部门";e={$i.Department}}, ` @{n="邮件数量";e={$mbxstatistics.ItemCount}},` @{n="已用空间(MB)";e={$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="剩余空间(MB)";e={(get-mailbox $i.identity).ProhibitSendQuota.value.tomb()-$mbxstatistics.TotalItemSize.value.tomb()}},` @{n="邮箱配额(MB)";e={(get-mailbox $i.identity).ProhibitSendQuota.value.tomb()}},` @{n="存档邮箱数量";e={$mbxsarctatistics.ItemCount}},` @{n="存档邮箱大小(MB)";e={$mbxsarctatistics.TotalItemSize.value.tomb()}},` @{n="挂载的服务器名";e={$mbxstatistics.ServerName}},` @{n="最后一次登录时间";e={$mbxstatistics.LastLogonTime}},` @{n="数据库名";e={$mbxstatistics.DatabaseName}},` @{n="手机号码";e={(Get-User $i.Identity).MobilePhone}},` @{n="办公室";e={(Get-User $i.Identity).office}},` @{n="工作电话";e={(Get-User $i.Identity).Phone}},` @{n="职务";e={(Get-User $i.Identity).title}} if("{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -ge 0.1 -and "{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -lt 0.2) ` { $UserName = "[email protected]" #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From "[email protected]" -to (Get-Mailbox $i.identity).PrimarySmtpAddress -Cc "[email protected]" -Subject ($i.DisplayName+"的邮箱剩余空间不足20%,请清理您的邮箱,否则将可能无法发送邮件") -Credential $cred ` -SmtpServer "mail.yuntcloud.com" -BodyAsHtml ($i.DisplayName+"的邮箱剩余空间不足20%,请清理您的邮箱,否则将可能无法发送邮件") -Encoding ([System.Text.Encoding]::UTF8) } elseif("{0:n0}" -F $mbxtotal."剩余空间(MB)"/$mbxtotal."邮箱配额(MB)" -lt 0.1) ` { $UserName = "[email protected]" #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From "[email protected]" -to (Get-Mailbox $i.identity).PrimarySmtpAddress -Cc "[email protected]" -Subject ($i.DisplayName+"的邮箱剩余空间不足10%,请清理您的邮箱,否则将可能无法收发邮件") -Credential $cred ` -SmtpServer "mail.yuntcloud.com" -BodyAsHtml ($i.DisplayName+"的邮箱剩余空间不足10%,请清理您的邮箱,否则将可能无法收发邮件") -Encoding ([System.Text.Encoding]::UTF8) } } $userinfo+=$mbxtotal #把每次运行获取到的用户信息存入到userinfo } $userinfo #把查询到的信息在屏幕显示出来 $userinfo|Export-Csv -Path c:\mbxinfo.csv -NoTypeInformation -Encoding utf8 #把用户信息导出到c:\mbxinfo.csv $UserName = "[email protected]" #定义发送账户名称 $Password = ConvertTo-SecureString "Aa12345678" -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "全员邮箱使用情况汇总" -Credential $cred -SmtpServer "mail.yuntcloud.com" -Attachments "c:\mbxinfo.csv" -Encoding ([System.Text.Encoding]::UTF8)