Exchange中遇到一个小需求,有很多部门要申请动态通信组,问题是二级部门三级部门四级部门非常非常多。……

Get-ADObject -LDAPFilter "(&(&(ou>="")))" -SearchBase 'OU=xx,OU=xxx,DC=xxx,DC=xxx,DC=com' -Properties CanonicalName | FT CanonicalName -A |Out-File d:\oudaoteng.csv -Encoding utf8

以上语句需要有Active Directory的PowerShell管理工具可以执行,能够输出类似如下的文字

contoso.com/xxxx公司/xxxxsales/产业营销部             
contoso.com/xxxx公司/xxxxsales/商务运营   
contoso.com/xxxx公司/xxxxsales/商务运     
contoso.com/xxxx公司/xxxxsales/华东品牌营销中心          
contoso.com/xxxx公司/xxxxsales/商务运
contoso.com/xxxx公司/xxxxsales/商务运营服  
contoso.com/xxxx公司/xxxxsales/华北品牌营销中心          
contoso.com/xxxx公司/xxxxsales/商务运营服组
contoso.com/xxxx公司/xxxxsales/商务运营 
contoso.com/xxxx公司/xxxxsales/商务运
contoso.com/xxxx公司/xxxxsales/华南品牌营销中心

PowerShell在Exchange2010下快速创建动态通讯组_第1张图片


好吧,上面的输出结果其实是假的,不过可以保证,这些OU是不会有重名的,而且连子OU也包含了

接下来就是一个苦逼的操作了

打开这个CSV文件,复制一个新的sheet,把文件拷贝过去,去掉域名和/部分,这样就剩下中文部分了,我准备用中文部分做这个动态通讯组的中文名字,然后再拉一列,随便打点字做英文名字。【这块可以用excel,取一下中文名字的首字母】

第一行给他们命名一下,cn  cb  ca  ,当然这都是随便写的。

好了,拿到这个文件之后,要把它弄成UTF8格式的【这依然要花点小功夫】

最后去Exchange的EMC中运行一下下面的命令。

Import-Csv -Path e:\oudaoteng.csv | foreach {  new-DynamicDistributionGroup -Name $_.cb -RecipientContainer $_.cn -IncludedRecipients 'AllRecipients' -Alias $_.ca    }

或者用下面这个句子,他会把输出“结果”输出到一个文本文件中。注意是结果,这里也可以不用select *,那么输出的东西会少一些,或者可以选择需要的输出项目

import-Csv -Path d:\oudaoteng.csv |     foreach {  new-DynamicDistributionGroup -Name $_.cb -RecipientContainer 'contoso.com' -IncludedRecipients 'AllRecipients' -Alias $_.ca  |select *|out-file c:\file.txt -append    }


然后就是秒开,爽!


PowerShell在Exchange2010下快速创建动态通讯组_第2张图片