如何使用Powershell脚本监控Exchange2010(二) 企业内部邮件流量的监控

每个Exchange的管理员或者都遇到过这样的问题。对外,一般情况下,每家公司的邮件对外出口只有一个,这样比较容易管理,容易部署邮件防火墙,一般此类的防火墙都能提供邮件出入站的监控功能。可是针对内部邮件流我们没有办法知道,因为微软没提供此类的工具。如果没有此类数据的话,我们就无法准确的评估hub transport 服务器的负载和load balance是否工作正常。特别针对有多个site的情况下。

思路:我一直强调思路是因为,其实脚本很好写,脚本只是POWERSHELL的功能上的延伸。但是如果你没有思路,你将毫无头绪。言归正传,在Exchange2010的powershell里有没有针对邮件走向的查询命令呢,答案是肯定的,那就是: Get-MessageTrackingLog

A unique message tracking log exists on each computer that has the Hub Transport server role, the Mailbox server role, or the Edge Transport server role installed. The message tracking log is a comma-separated value (CSV) file that contains detailed information about the history of each e-mail message as it travels through an individual server.

经常使用powershell命令来管理exchange的同学对这个命令肯定不会陌生,我们经常使用这条命令来查询邮件从哪里来往哪里去。

比如

Get-MessageTrackingLog -Start "03/13/2010 09:00:00" -End "03/15/2010 17:00:00" -Sender john@contoso.com
(注意,默认情况下message tracking log 在hub server中只保留一个月时间,像这样查询去年的邮件是不可能的)
命令的意思是查询2010年3月13到15日之间,由john@contoso.com这个账号发出的邮件。
当然我们也可以加入其他参数来使查询更加准确。
Get-MessageTrackingLog [-DomainController <Fqdn>] [-End <DateTime>] [-EventId <String>] [-InternalMessageId <String>] [-MessageId <String>] [-MessageSubject <String>] [-Recipients <String[]>] [-Reference <String>] [-ResultSize <Unlimited>] [-Sender <String>] [-Server <ServerIdParameter>] [-Start <DateTime>]
这个命令功能看起来非常强大,我们可否利用它来查询邮件流?当然可以。
来看看我的思路吧,前提:
1. 每封邮件都有唯一的MessageTrackingLog(以下简称MTL)
2. 发送给多人也只有一个MTL
3. 存在时间30天
如果我们把一天时间内,在这台hub服务器上发送和接收的所有邮件做个记数不就可以知道有多少邮件被发送和接收了么。
所有命令如下:
(Get-MessageTrackingLog –server $server -Start $yesterday -End $rundate -ResultSize unlimited  | Measure-Object).count
注意-enventid send 这个参数,表示所有发送的事件,如果不强调这个参数就是显示所有事件的邮件,一定要注意!

关键点:如何表示$yesterday这个变量。

$today = get-date
$rundate = (get-date).tostring("yyyy\-MM\-dd")

$yesterday = $($today.adddays(-1)).toshortdatestring()

大家可以试试以上这三个变量在PS里的结果有啥区别。

接下去就是定位$server,其实也很容易,大家还记得foreach这个工能吧? 可以将$servers = get-transportserver 输出的结果用foreach来循环。


$today = get-date
$rundate = (get-date).tostring("yyyy\-MM\-dd")
$yesterday = $($today.adddays(-1)).toshortdatestring()
$filedate = (get-date).tostring("yyyyMMdd_hhmmss")
$msg = "this script is running at $today"
$servers = get-transportserver
foreach ($server in $servers)
{

$send =(Get-MessageTrackingLog -server $server -Start $yesterday -End $rundate -ResultSize unlimited -EventId send | Measure-Object).count
$receive = (Get-MessageTrackingLog -server $server -Start $yesterday -End $rundate -ResultSize unlimited -EventId receive | Measure-Object).count
$msg = $msg + "
<br>$server sent $send emails, received $receive emails.</br>
"
}

# SMTP
$nSmtpserver = "自己填,下同"
$nFrom = ""
$nto = "
$nSubject = ""

# email report
send-mailmessage -bodyashtml -subject $nSubject -Smtpserver $nSmtpserver -From $nFrom -To $nTo -body $Msg

来看看输出的效果

image

还不错,当然还可以美化一下,外加归类。大家也可以看到在同一个SITE中的邮件流量基本相同,符合负载均衡的工作方式。

转载于:https://www.cnblogs.com/rogerzhang/archive/2012/01/10/2317929.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值