PowerShell 实现邮箱收发数量统计

我们在做Exchange Server日常管理的时候,经常会遇到这样的情况,老板想知道每个邮箱每天发送了多少封邮件?我们的服务器一天或者一个月发送多少邮件?又或者是服务器一天有多少发送失败的邮件,发往某一个地址有多少数量?这些在Exchange图形化管理中都是无

 我们在做Exchange Server日常管理的时候,经常会遇到这样的情况,老板想知道每个邮箱每天发送了多少封邮件?我们的服务器一天或者一个月发送多少邮件?又或者是服务器一天有多少发送失败的邮件,发往某一个地址有多少数量?这些在Exchange图形化管理中都是无法实现的,或者需要借助第三方工具来实现。下面我们介绍一下Exchange强大的Powershell管理,几个命令就解决了以上问题。

1、统计一台HUB服务器上一个时间段内的发送情况:

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" -Server "srvbj06" |Measure-Object

ResultSize unlimited参数为显示所有。

加上Measure-Object为计算对象的数字属性以及字符串对象总和。去掉则会逐条显示。

image

-Eventid可包括BadMail、Defer Deliver、DSN、Expand、Fail、PoisonMessage、Receive、Redirect、Resolve、Send、Submit 和 Transfer。为对邮件状态进行检索。

比如下面使用Fail参数来检索一个时间段内发送失败的邮件数量:

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "Fail" -Server "srvbj06" |Measure-Object

image

2、查询某个邮箱的发送情况:

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" -Sender "luochen@bpdi.com.cn" |Measure-Object

image

下面在看看这个邮箱哪些邮件发送失败了

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "FAIL" -Sender luochen@XX.com

image 
3、按邮箱排列出一个时间段内发送情况:

加上Group-Object命令进行分组统计这里我们计算Count的值,然后在把Count进行分组,在使用select进行筛选。

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" |Group-Object -Property:sender |select name,count

image

上面已经统计出了每个邮箱的发送情况,下面在加上sort对count数值进行一个排序,这样就能得出哪个邮箱发得最多了。

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" |Group-Object -Property:sender |Select name,count|sort count -Descending

image

(责任编辑:Exchange中文站)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过使用PowerShell脚本来实现定期屏幕截屏。 首先,我们需要使用PowerShell的`Add-Type`命令来导入System.Drawing命名空间,以便我们可以使用其中的类和方法来进行屏幕截图操作。 然后,我们可以使用`New-Object`命令创建一个`System.Windows.Forms.Screen`的对象,来获取屏幕的大小和分辨率信息。 接下来,我们可以使用`New-Object`命令创建一个`System.Drawing.Bitmap`的对象,来创建一个位图对象用于存储截图。 在实际进行截图之前,我们需要先定义一个文件名和存储路径,以便将截图保存到指定的位置。我们可以使用`Get-Date`命令获取当前的日期和时间,并将其格式化为特定的命名规则。 然后,我们可以使用`Graphics.FromImage`方法创建一个`System.Drawing.Graphics`的对象,并使用`CopyFromScreen`方法将屏幕的内容复制到位图对象中。 最后,我们可以使用`Save`方法将位图对象保存为图片文件,完成屏幕截图操作。 完整的脚本示例如下所示: ```powershell Add-Type -TypeDefinition @" using System; using System.Drawing; using System.Windows.Forms; public class ScreenCapture { public static void CaptureScreen(string filename) { Screen screen = Screen.PrimaryScreen; Bitmap screenshot = new Bitmap(screen.Bounds.Width, screen.Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); using (Graphics graphics = Graphics.FromImage(screenshot)) { graphics.CopyFromScreen(screen.Bounds.X, screen.Bounds.Y, 0, 0, screen.Bounds.Size, CopyPixelOperation.SourceCopy); } screenshot.Save(filename); } } "@ $timestamp = Get-Date -Format "yyyyMMddHHmmssfff" $filename = "C:\Screenshots\screenshot_$timestamp.png" [ScreenCapture]::CaptureScreen($filename) ``` 上述脚本将会在C盘的Screenshots文件夹下创建一个以时间戳命名的截图文件。你可以使用Windows任务计划程序来定期运行该脚本,实现定期屏幕截图的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值