Я хотел бы использовать сценарий Powershell для создания контактов в определенной папке в Active Directory из файла .csv. Этот сценарий должен позволить мне создать первую часть адреса электронной почты на основе информации, введенной в файл .csv.
Мы все еще работаем на нашем сервере обмена на Windows Server 2003, и на моем компьютере установлен 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 plus
Имя, Электронная почта
ГРУЗОВИК 327,9426645555
РЕДАКТИРОВАТЬ: grr ... Я забыл Exchange 2003 ... нижеприведенное работает только на Exchange 2007 и выше.
Для Exchange 2003 вам нужно использовать csvde: http://support.microsoft.com/kb/327620
Пример того, как отформатировать файл csv и команду csvde, можно найти здесь: http://forums.msexchange.org/m_1800509533/printable.htm
ЦИТАТА:
objectClass, DN, displayName, proxyAddresses, targetAddress, mail, mailNickname, givenName, sn, showInAddressBook
objectClass = Класс объекта, который вы создаете (в вашем случае «контакт») DN = Отличительное имя объекта displayName = Отображаемое имя объекта proxyAddresses = type: прокси-адрес контактного объекта (например, SMTP: user @ domain .com) targetAddress = type: целевой адрес контактного объекта (например, SMTP: user@domain.com) mail = Mail (который вы можете увидеть в общей вкладке контактного объекта) mailNickname = псевдоним имя контактного объекта givenName = First Name sn = Last Name showInAddressBook = для включения контакта в глобальном списке адресов (даже если мы не указали это значение, контакт будет отображаться в глобальном списке адресов по умолчанию)
Если хотите, я пришлю вам образец CSV-файла.
Возможно, вам придется изучить советы и рекомендации Excel, чтобы создать файл CSV из введенных данных.
После создания файла CSV вы можете использовать следующую команду для импорта объектов контактов.
CSVDE -i -f Например: CSVDE -i -f c: \ test.csv
-i = для указания режима импорта
-f = Для указания входного файла
Другой альтернативой является сторонняя утилита, такая как AD Bulk Contacts: http://www.dovestones.com/active-directory-contact-import/
Хорошо, вот что я бы сделал (если бы это был Exchange 2007+ lol)
Сначала откройте файл CSV в Excel. Вам необходимо улучшить ваш 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
}
Это должно, по крайней мере, указать вам направление, в котором вы попадете. Если вы застряли, дайте мне знать.