写在这篇博客之前的话:
脚本千变万化却又万变不离其中,再复杂的脚本也是一个模块一个模块搭建起来的。我其实是从11年9月份开始学POWERSHELL的,之前一点编程经验也没有。可见PS其实非常好学,所以我希望我能授人以渔而非鱼,简单的COPY我写好的脚本的确能用,但是有没有想过其实说不定你自己写的话能写的更好?
Exchange2010(以下简称E14)提供了大量新的功能和变动,比较新的一个概念就是引入了Archive邮箱。使用Archive邮箱有非常多的优点:
1. 传统的PST文件非常容易损坏,一旦损坏修复比较麻烦,特别是针对一些老员工,因为PST文件都非常巨大。
2. 没有备份,因为一般都存储在本地硬盘,而将PST存储在网络硬盘微软是不支持的。
3. Archive邮箱支持OWA和Anywhere的访问,出差无需再携带笔记本电脑查看历史邮件了。
现有的问题:
1. 一旦离线,Archive邮箱将无法访问,解决办法是针对经常出差的用户提供大容量的主邮箱
2. Archive的容量和使用情况在Outlook2010中是无法查看的, 无解决方案
针对这个问题,我写了一个脚本,每个月跑一次发给所有亚太区的用户以告知对方当前的使用情况和容量的大小。而针对一些还未导入PST文件的用户这点也非常有用,因为一旦Archive的容量小于PST文件则会报错,导致导入失败。
以上是脚本的由来,现在我们看看如何制作这样的一个脚本:
首先是理念,我想要通过PS脚本来制作一个全自动查询工具然后将查询到的结果自动发送到用户邮箱。而我要做的只是告诉他被查询人的名字。所以我的脚本就会按照这个理念来设计。大家如果想要自己制作脚本,与其盲目的到处搜索以有的,不如自己静下心来想想看如果自己写,一个模块一个模块的设计该怎么写。看起来很麻烦的代码其实一点一点分析还是很容易理解的。
虽然EMC(Exchange管理工具台)可以查看当前用户的Archive邮箱的配额但是无法查看使用情况,而通过PowerShell则可以做到:
Get-Mailbox -Identity $user �Carchive
我们来看看输出的结果,输入Get-Mailbox -Identity $user �Carchive | fl
找到以上两条就是当前用户的配额,如需查看使用情况,可以使用:
Get-MailboxStatistics -Identity $user �Carchive | select displayname,totalitemsize,itemcount,totaldeleteditemsize
这两条命令已经能够得到我们想要知道的一切数据了,我们有配额,有使用情况,现在只需将这些数据放在变量里,让脚本跑完之后将输出的结果发送给用户,我以后就是甩手掌柜啦。哈哈哈哈
关键点:
1. 如何将输出的结果发送EMAIL给被查询的用户?
答:可以调用出.PrimarySmtpAddress.local和.PrimarySmtpAddress.domain的属性中间加个@
2. 如何确定和调用自己想要的参数?
答: 可以像我一样,输入命令然后使用管道符| fl 来看具体的参数,挑出我需要的然后再脚本中调用他。
来看看输出结果:
还是挺漂亮的吧??
代码如下:
###### Users Alias ########
$user = "自己填"
###########################
$date = get-date
$mailbox = Get-Mailbox -Identity $user -archive
$current = Get-MailboxStatistics -Identity $user -archive
$displayname = $mailbox.DisplayName
$email = $mailbox.PrimarySmtpAddress.local + "@" + $mailbox.PrimarySmtpAddress.domain
$arcquota = $mailbox.ArchiveQuota
$arcsize = $current.TotalItemSize
$delsize = $current.TotalDeletedItemSize
$nMsg = "
<br>Dear $displayname</br>
<br>This email is automaticly generated by system, all the information will only send to you.</br>
<br>Following is your archive mailbox status report:</br>
<br></br>
<br>Your Email Account: $email</br>
<br>Your Archive Mailbox Quota: $arcquota</br>
<br>Current Useage: $arcsize</br>
<br>Deleted Item Size: $delsize</br>
<br></br>
<b><br>Please do not reply or forward this email</br></b>
<b><br>Any problem please contact <a href='mailto:自己填>" + "HelpdeskAPAC" +"</a></b></br>"
$nSmtpserver = "自己填,下同"
$nFrom = "Helpdesk-ArchiveMailbox-Status@自己填.com"
$nTo = $email
$nSubject = "ArchiveMailbox Status $date"
send-mailmessage -bodyashtml -subject $nSubject -Smtpserver $nSmtpserver -From $nFrom -To $nTo -body $nMsg
write-host "DONE, Email has already sent to $email"
=================================================================
我最近一直在想在博客中直接贴出已经写好的代码是否值得推崇,算了,看看各位的反馈如何吧。