我正在寻找一些帮助,以便在新域上的新Exchange服务器上自动创建别名。这构成了正在进行的迁移的许多步骤之一。
我想运行以下内容:
New-Mailbox -alias $Alias -name "$FullName" -database "CompanyDatabase" -org "CompanyMailboxes" -LinkedMasterAccount $UserAccount -LinkedDomainController domain.example.com -UserPrincipalName $UserEmailAddress
但是,我需要一种方法从现有域中提取所需的变量并将它们输出到文件中。然后,通过foreach语句,递归运行上面的命令。
我需要提取每个用户:
John Doe = johnd
)johnd@domain.example.com
或john@domain.example.com
取决于创建用户的时间)johnd@another.domain.com
)理想情况下,我想将输出存储在一个文件中,如果需要,我可以在以后使用。
然后以某种方式将上面的命令包装在foreach中并引用该文件。
答案 0 :(得分:0)
$OLD = Get-mailbox -resultsize 10
foreach ( $NEW in $OLD ) { New-Mailbox -alias $OLD.alias -name $OLD.Name ... }
以最简单的方式工作,你会想要更多地修补它,因为你会以这种方式获取各种邮箱。
编辑:现有属性是否与新域中的属性相同?
-alias $( ( $OLD.Name ).Split( " " )[-1] + ( $OLD.Name ).Split( " " )[0] )
那么您可以使用相同的命令来处理电子邮件地址吗?
$( ( $OLD.Name ).Split( " " )[-1] + ( $OLD.Name ).Split( " " )[0] + "@another.domain.com" )
答案 1 :(得分:0)
我设法解决了这个问题。感谢受访者的帮助,并帮助其他人解决同样的问题:
在域控制器上运行以下powershell脚本。
Import-Module ActiveDirectory
foreach ($User in (Get-ADUser -Server "<SERVER>" -Filter * -Properties EmailAddress)){Write-Output "$($User.SamAccountName),$($User.EmailAddress),$($User.Name)" >> 'C:\output.csv'}
输出将以CSV(无标题)保存到C:\ output.csv
将输出文件复制到Exchange服务器,并在交换机控制台中运行以下脚本(您需要在CSV中包含自己的标题,我使用&#34;名称&#34;和&# 34;姓氏&#34;等,例如);
Import-CSV -delimiter ";" "output.csv" | Foreach {
$FullName = $_.Name + " " + $_.Surname
New-Mailbox -alias $_.Alias -name $Fullname -Firstname $_.Name -Lastname $_.Surname -database "<DATABASE>" -org "<OU>" -LinkedMasterAccount $_.AccountDomain -LinkedDomainController <DOMAIN CONTROLLER> -UserPrincipalName $_.Email
}
我能够使用此方法为所有用户成功创建别名。您的情况可能会有所不同,但如果需要,我希望这足以进行逆向工程。