另外也刨一个坑等待兄弟们去实现:如何与现有企业环境的流程进行合并,使得新用户账户可以自动被创建。比如如何与sharepoint集成,形成工作流。
通常批量启用邮箱账户的情景有如下2种:
1、ad中用户账户已存在,但是没有启动邮箱
2、ad中用户账户不存在,也没有启动邮箱
批量启用邮箱账户的命令介绍
get-user 遍历AD获取账户信息
enable-mailbox 启用邮箱
ConvertTo-SecureString $_.password -asPlaintext –force 直接在ps中创建邮箱的时候输入密码肯定需要这条命令
import-csv 导入csv数据
foreach-object PS中用到的循环
for 批处理的循环
下面用到的办法都是一次就完成启动邮箱的所有步骤。
——————
方法一 ad账户不存在,使用dsadd添加用户账号,然后调用EMS添加账户
需要3个文件
namelist.txt
user_mail.cmd
en-mailbox.ps1
namelist.txt 内容
分别是Lastname和firstname,通常我需要2个不同的设置,因为外国人的firstname在前面,需要调整一下。
user_mail.cmd内容
这个cmd脚本做了下列事情
1、从namelist中读取设置好的用户名
2、使用dsadd添加账户,使用for循环处理。
-添加用户到一个组内
-添加用户的到岗日期
3、使用导出功能,添加了PS1的脚本,
-添加用户邮箱到存储组中
-禁用用户邮箱的pop功能
4、调用EMS来执行导出的脚本
en-mailbox.ps1开始是空的,运行完user_mail.cmd后为下图
执行cmd的结果
脚本如下:
set dc1=cashcat
set dc2=winos
set ou=users
set pwd=P@ssw0rd
set namelist=./namelist.txt
set ems=./en-mailbox.ps1
set /p date=Please input employee's join date:
set databasename="Mailbox Database"
FOR /F "eol=; tokens=1,2,* delims=, " %%i in (%namelist%) do dsadd user cn="%%i %%j",CN=%ou%,dc=%dc2%,dc=%dc1% -samid %%j%%i -upn %%j%%i@%Dc2%.%Dc1% -pwd %pwd% -ln %%i -fn %%j -display "%%i %%j" -desc %date% -pwdneverexpires no -memberof CN=FTEGroup,CN=Users,DC=winos,DC=cashcat
FOR /F "eol=; tokens=1,2,* delims=, " %%i in (%namelist%) do echo Enable-Mailbox -Identity "%%i %%j" -Alias "%%j%%i" -Database dc/%databasename% >>%ems%
FOR /F "eol=; tokens=1,2,* delims=, " %%i in (%namelist%) do echo set-casmailbox -Identity "%%j%%i" -popenabled $false >>%ems%
C:/WINDOWS/system32/windowspowershell/v1.0/powershell.exe -PSConsoleFile "C:/Program Files/Microsoft/Exchange Server/bin/exshell.psc1" -noexit -command "./en-mailbox.ps1"
脚本缺点:每次运行完或者开始运行前,需要查看en-mailbox.ps1中是否为空,以防止错误产生。
脚本优点:一次搞定建立过程省事又省心
——————-
方法二 使用模板批量建立账户
需要3个文件
namelist.csv
enable.cmd
enable.ps1
1. namelist.csv
2. enable.ps1
3.enable.cmd
结果如图
运行状态如下图
更多的信息,请参考:
如何使用模板创建收件人
http://technet.microsoft.com/zh-cn/library/bb125152.aspx
此方法缺点:无法为已存在用户创建邮箱,无法为用户添加组信息,还得手动去添加(如果有流程的话,应该是groupmanager自行去添加该组员,IT省事了)
脚本优点:一次搞定建立过程省事又省心
脚本如下:
$template = Get-Mailbox xun
import-csv "./namelist.csv" | ForEach-Object -process {$temp = ConvertTo-SecureString $_.password -asPlaintext -force;New-mailbox -Name $_.name -UserPrincipalName $_.upn -OrganizationalUnit $_.ou -Database "Mailbox Database" -Password $temp -TemplateInstance $template}
———————
方法三 获取某个ou下的账户然后添加邮箱
这个脚本适用于AD账户已经存在,而需要为账户添加邮箱权限的时候。严格来说算不上真正意义上的批量处理。
get-user –OrganizationalUnit Test | where-object{$_.RecipientType –eq “User”}
get-user –OrganizationalUnit Test | where-object{$_.RecipientType –eq “User”} | Enable-Mailbox –Database “DC/Mailbox Database” | get-mailbox | select name,windowsemailaddress,database
get-user –OrganizationalUnit Test | where-object{$_.RecipientType –eq “User” -and $_.department –eq “Sales”} | Enable-Mailbox –Database “DC/Mailbox Database” | get-mailbox | select name,windowsemailaddress,database
以上脚本分别是
1、获取ou test下所有的user类型账户
2、获取ou test下所有的user类型账户然后启动他们的邮箱
3、获取ou test下所有的user类型以及部门是sales的账户,然后启动他们的邮箱
就是这么多,其实以上三个方法都是非常简单的,也比较容易实现。
我通常仅使用方法1和方法3,毕竟企业的需求不同,不一定适合我的就适合您。