RSS

挖坑文05 一次搞定批量启用exchange 邮箱账户

07 Apr

今天这个坑文比较简单,严格来说应该不算挖坑文之列,但是因为很多朋友有需要,所以还是稍微挖一挖,找了几个比较省力的办法来进行批量账户启用。

另外也刨一个坑等待兄弟们去实现:如何与现有企业环境的流程进行合并,使得新用户账户可以自动被创建。比如如何与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后为下图

 
最终效果EMC中查看,全部完成 

执行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,毕竟企业的需求不同,不一定适合我的就适合您。

Advertisements
 
 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: