使用 powershell 将 CSV 文件导入 Exchange 邮件联系人且无重复

使用 powershell 将 CSV 文件导入 Exchange 邮件联系人且无重复

问题:许多人的信息都被添加到了 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 用户名分配为别名。

相关内容