PowerShell在Exchange2010下快速开启邮箱

有过Exchange2010运维经验的朋友都知道,我们如果在图形界面一次性的为多个域账户开启邮箱的话,并且当用户的名字是中文的,那么会造成用户别名是乱码,这是一件非常悲剧的事情。

经过多次测试,已经用PowerShell搞定,一条语句完成邮箱的开启,每天自己跑一次脚本就可以了,工作难度大大降低。


csvde -f users.csv -d "OU=xxx,DC=tech,DC=xxx,DC=com" -l cn,name

首先最开始的方法很傻,先通过csvde获取特定ou下的账户和别名,做一个表 .

FOR /F "eol=; tokens=1,2 delims=," %a in (users.csv)  do echo Enable-Mailbox -Identity 'tech.xxx.com/xxx /%a' -Alias '%b' -Database 'First Storage Group' >> e:/33.txt

然后通过循环语句,把命令都吐到一个文本文档中。

得到了Enable-MailBox的特定语句,复制到Exchange的EMS中运行。

j_0001.gif尼玛,问题是上面的是CMD,for语句的写法在PowerShell中是不能直接使用的,造成的后果就是,整个运维当中还有很多手工参与的操作。


=========================

参考了

http://www.pstips.net/string-object-methods.html

http://www.cnblogs.com/ITGirlXiaoXiao/archive/2012/08/29/2661711.html

http://shubao.blog.51cto.com/401810/760025

等等一些PowerShell方面的文章,终于搞定,写下如下一个ps1脚本,保存为.ps1脚本,执行即可。

$list=get-user –OrganizationalUnit xxx 
ForEach ($item in $list)
{
$sam=$item.SAMAccountName
$user= -Split $item

echo $user $sam 
}

这个例子不是直接创建邮箱的,而是吐一下用户信息和别名信息。

下面这个是适合生产环境使用的

$list=get-user –OrganizationalUnit xxx -RecipientTypeDetails user

ForEach ($item in $list)
{
$sam=$item.SAMAccountName
$user= -Split $item
Enable-Mailbox -Identity $user -Alias $sam -Database 'First Storage Group'
}

当然其实这个版本还是有点问题的,你要想看正式生产中的实例,需要点击看一下下一篇文章~

你可能感兴趣的:(运维)