问题:许多人的信息都被添加到了 Exchange 管理控制台中的“邮件联系人”列表中,但不是全部。
概括:我试图将 Excel .csv 文件中的数百人列表添加到我的 Exchange 管理控制台(更具体地说是邮件联系人)。一些联系人可能已经在联系人列表中,这可能导致我的foreach
报表停止运行?
我的问题:是否有代码可以运行来检查成员是否存在,如果不存在则添加该成员?
我在 powershell 中以以下格式运行了此代码:
Import-Csv .\computech.csv | foreach { New-MailContact -Name $_.displayname -FirstName $_.firstname -LastName $_.lastname -ExternalEmailAddress $_.mail -OrganizationalUnit $_.OrganizationalUnit}
奇怪的是,它添加了列表中的许多人,但不是全部。当我尝试运行代码时,我收到此错误:
Import-Csv:成员“Aaron”已经存在。
“Aaron” 是列表中的第一位成员,因此执行立即停止
我以前曾尝试使用这个代码:
[PS] C:\Windows\system32>Import-Csv \\FILLER\MailboxBackups\contacts.csv | foreach-object{if (Get-MailContact -External
EmailAddress $_.ExternalEmailAddress){write-host $_.ExternalEmailAddress 'is a duplicate entry!!!!'} else {New-MailConta
ct -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}}
但我收到了同样的“Aaron”已存在错误,哈哈。任何帮助都将不胜感激
- - - - 更新 - - - - - - 我发现由于别名冲突,并非所有联系人都已添加。别名是像“bob”这样的常见名称,肯定已经存在。人们通常使用数字来解决这个问题,还是使用用户电子邮件地址而不是简单名称?
答案1
文章使用 powershell 导入 exchange 邮件联系人建议使用以下代码:
Import-Csv .\ExternalContacts.csv|
foreach-object{if (Get-MailContact -anr $_.name) {write-host $_.name 'is a duplicate entry!!!'}
else {New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}
}
答案2
回答您的更新,一些组织会使用姓氏的首字母(在我的情况下是 mmoore),如果采用首字母,则在其后附加一个数字或使用姓氏的首字母中间字母,但对其进行转换是常见的做法。
因此,在导入时,您可以添加条件来检查即将插入的别名,如果存在则对其进行转换,直到生成唯一的别名。如果您愿意,我可以添加代码,但我想您知道我的意思。
更新
我应该补充一点,这通常是通过 AD 用户名来完成的,因此如果您实施 AD,您也可以尝试将其 AD 用户名分配为别名。