Chinaunix首页 | 论坛 | 博客
  • 博客访问: 980090
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3038
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-01 17:59
个人简介

关注微软私有云、公有云,虚拟化,项目经验丰富。商业合作请通过邮件联系,邮件地址a9y#foxmail.com(请替换#为@)。

文章分类

全部博文(102)

文章存档

2016年(3)

2015年(8)

2014年(14)

2013年(77)

分类: Windows平台

2015-03-25 15:58:12

有过Exchange2010运维经验的朋友都知道,我们如果在图形界面一次性的为多个域账户开启邮箱的话,并且当用户的名字是中文的,那么会造成用户别名是乱码,这是一件非常悲剧的事情。 经过多次测试,已经用PowerShell搞定,一条语句完成邮箱的开启,每天自己跑一次脚本就可以了,工作难度大大降低。

点击(此处)折叠或打开

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

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

点击(此处)折叠或打开

  1. 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脚本,执行即可。

点击(此处)折叠或打开

  1. $list=get-user –OrganizationalUnit xxx
  2. ForEach ($item in $list)
  3. {
  4. $sam=$item.SAMAccountName
  5. $user= -Split $item
  6.  
  7. echo $user $sam
  8. }

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

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

点击(此处)折叠或打开

  1. $list=get-user –OrganizationalUnit xxx -RecipientTypeDetails user
  2.  
  3. ForEach ($item in $list)
  4. {
  5. $sam=$item.SAMAccountName
  6. $user= -Split $item
  7. Enable-Mailbox -Identity $user -Alias $sam -Database 'First Storage Group'
  8. }


当然其实这个版本还是有点问题的,你要想看正式生产中的实例,我们再往下,如果想知道为什么说上面这个例子有问题,大家可以自行测试一下,或者和下面的代码做个对比。


点击(此处)折叠或打开

  1. #脚本本身放在E盘根目录就ok了,其他不需要做任何设置。
  2. #powerd by 九叔 a9y@foxmail.com
  3. e: #进入磁盘e
  4. Remove-Item e:/mail.ps1 #删除脚本临时运行文件
  5. $list=get-user -OrganizationalUnit 牛逼公司 -RecipientTypeDetails user #取未获得邮箱的用户列表,从整个域内获取,可以指定特定OU。牛逼公司就是OU名,可以任意修改,不需要引用
  6. $list >> e:/mail.ps1
  7. cat e:/mail.ps1
  8. Write-Host '↑↑↑↑本次要操作的开启邮箱的用户名如上↑↑↑↑'
  9. $extime = (Get-Date -Format 'yyyyMMddHHmmss')
  10. $tt = "e:/" + $extime + ".ps1" #包含时间的存储操作记录的文件,后缀可以随意修改
  11. Write-Host '请点击任意键继续,或关闭该进程取消!' -NoNewline #点击任意键继续
  12. $null = [Console]::ReadKey('?')#点击任意键继续
  13. Remove-Item e:/mail.ps1
  14.     #以下进入循环,吐需要的命令
  15. ForEach ($item in $list)
  16. {
  17. $sam =$item.SAMAccountName
  18. $user = $item.name
  19. #$user = -Split $item
  20. echo "Enable-Mailbox -Identity '$user' -Alias '$sam' -Database 'xyz'" >> $tt
  21. echo "Enable-Mailbox -Identity '$user' -Alias '$sam' -Database 'xyz'" >> e:/mail.ps1 #吐到后期要执行的文件中
  22. }
  23. ./mail.ps1 #执行新的PowerShell文件

比较可惜的是,chinaunix无法直接选代码形式为PowerShell,所以现在显示的高亮变色有点问题,但是不影响最终使用。
阅读(3761) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册