我想做的是使用 Powershell 脚本从 .csv 文件在 Active Directory 中的某个文件夹中创建联系人。此脚本应允许我根据 .csv 文件中输入的信息创建电子邮件地址的第一部分。
我们仍在 Windows Server 2003 上运行我们的 Exchange 服务器,并且我的计算机上有 Powershell 3.0。
这是一个接近我想要但不完全是的脚本。
$csv = Import-Csv �C:\Contacts.csv�
foreach($line in $csv)
{
New-MailContact -Name $line.DisplayName -ExternalEmailAddress $line.EmailAddress -OrganizationalUnit �Contacts� -Alias $line.Alias
}
我对 Powershell 不是很有经验,如果有人能帮助我,我将非常感激。
编辑:
根据要求,这是我的 .csv 中的一行加上标题的示例
姓名,电子邮件
卡车 327,9426645555
答案1
编辑:哎呀...我忘了 Exchange 2003...下面的内容仅适用于 Exchange 2007 及更高版本。
对于 Exchange 2003,您需要使用 csvde:http://support.microsoft.com/kb/327620
有关如何格式化 csv 文件和 csvde 命令的示例可以在此处找到:http://forums.msexchange.org/m_1800509533/printable.htm
引用:
对象类、DN、显示名称、代理地址、目标地址、邮件、邮件昵称、给定名称、sn、showInAddressBook
objectClass = 您正在创建的对象类(在您的情况下为“联系人”) DN = 对象的区别名称 displayName = 对象的显示名称 proxyAddresses = 类型:联系人对象的代理地址(例如 SMTP:[电子邮件保护]) targetAddress = type:联系对象的目标地址(例如 SMTP:[电子邮件保护]) mail = 邮件(您可以在联系人对象的常规选项卡中看到) mailNickname = 联系人对象的别名 givenName = 名字 sn = 姓氏 showInAddressBook = 用于在 GAL 中启用联系人(即使我们没有指定此值,联系人也会显示在默认 GAL 中)
如果您愿意,我可以向您发送一个示例 CSV 文件。
您可能需要学习 Excel 技巧和窍门,才能从输入详细信息中创建 CSV 文件。
创建 CSV 文件后,您可以使用以下命令导入联系人对象。
CSVDE -i -f 例如:CSVDE -i -fc:\test.csv
-i = 指定导入模式
-f = 指定输入文件
另一种选择是使用第三方实用程序,例如 AD Bulk Contacts:http://www.dovestones.com/active-directory-contact-import/
好的,我会这样做(如果这是 Exchange 2007+ 哈哈)
csv 文件的设置
首先,在 Excel 中打开您的 CSV 文件。您需要使您的 CSV 文件更好地输入到 PS“脚本”中。
- 改成
Name
DisplayName
- 复制此
DisplayName Column to a new column called
TempName` - 改成
Email
prefix
- 创建一个名为
FirstName
- 创建一个名为
LastName
- 创建一个名为
Email
获取FirstName
并LastName
填充列:
突出显示所有数据,然后
TempName
选择并根据Data
Text to Columns
空间名字和姓氏现在将名字和姓氏复制到您在#4-5 中创建的各自新列中。
填充Email
列:
- 在电子邮件列中,转到与第一行数据相邻的空单元格。也就是说,应该
9426645555
在prefix
同一行左侧的某列中,假设数据在 B3 中。在这里,您将创建一个公式来将电子邮件前缀与域连接起来。然后将=CONCATENATE(A2,"@domain.com")
其复制并粘贴到列中以获取所有正确的电子邮件地址。
现在,您应该有包含DisplayName
、FirstName
、LastName
和的行Email
,这些行包含单个用户的有效信息。不要担心多余的列……我们不会在输入中使用它们。
现在将文件保存为 CSV 文件,然后验证 CSV 文件的输入是否准确
关于 Powershell 脚本:
$csv = Import-Csv C:\Contacts.csv
foreach($line in $csv)
{
New-MailContact -Name $line.DisplayName -FirstName $line.FirstName -LastName $line.LastName -ExternalEmailAddress $line.Email -OrganizationalUnit Contacts -Alias $line.Alias
}
这至少应该能为你指明方向。如果你遇到困难,请告诉我。