![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Создание, обновление контактов и помещение из в группу рассылки |
|
PowerShell - [решено] Создание, обновление контактов и помещение из в группу рассылки
|
Пользователь Сообщения: 112 |
Здравствуйте, уважаемые коллеги
Столкнулся с такой необходимостью: Наша компания достаточно большая разветвлённая, имеется несколько организаций в структуре этой компании и не все они с точки зрения топологии сети находиться в одном лесу. Есть компании, которые имею свой собственный лес и собственный Exchange сервер. Как и во многих организациях, сотрудники приходят, уходят, переводиться в другие подразделения (организации), меняются электронные адреса, меняются телефоны, в общем, идет обычный кадровый процесс. Теперь к самой сути. Имеется Exchange 2010 - Требуется периодическое обновление членства группы рассылки на основе контактов. - Необходимо максимально облегчить этот процесс на основе скрипта PowerShell - Имеется, постоянно обновляющийся CSV файл контактов. Что требуется от скрипта: Сверка содержимого CSV и OU в Active Directory на предмет совпадения контактов. Если контакт существует в OU и в CSV, то ни каких действий не происходит. Если контакт отсутствует в OU, то контакт создается на основе полученных данных из CSV. Если существующий контакт в OU отсутствует в CSV, то контакт удаляется из AD. Дополнительно, должно происходить обновление атрибутов контактов (объектов Active Directory - contacts) на основе CSV файла, а именно мобильный телефон, должность, компания. И было бы замечательно, если бы вновь созданные контакты помещались в группу рассылки. Я наклепал небольшой скрипт создающий контакты и меняющий в них атрибуты, но на этом мои знания иссякли. Не могу сообразить, как мне соблюсти условия. Вот мой скрипт. Import-Module ActiveDirectory $Contacts = Import-Csv -Delimiter ";" -Path "C:\SCRIPTS\CreateContactsCSV\ContactsList.csv" foreach ($Contact in $Contacts) { $FN = $Contact.FN $LN = $Contact.LN $N = ($Contact.FN +" "+ $Contact.LN) $A = ($Contact.FN +"."+ $Contact.LN) $T = $Contact.T $M = $Contact.M $OU = $Contact.OU $SMTP = 'SMTP:' + $Contact.E New-MailContact ` -FirstName $FN ` -LastName $LN ` -Name $N ` -Alias $A ` -OrganizationalUnit $OU ` -ExternalEmailAddress $SMTP Get-ADObject -LDAPFilter "objectCLASS=contact" -SearchBase 'OU=Contacts,DC=domain,DC=local' | ` Where-Object {$_.Name -like $N} | Set-ADObject -Replace @{mobile=$M;title=$T} } FN;LN;T;M;E;OU Vladimir;Putin;President;+7 777 1111111;V.Putin@pochta.kz;domain.local/Contacts Barak;Obama;Assistant of the President;+7 777 2222222;B.Obama@pochta.kz;domain.local/Contacts Надеюсь на Вашу помощь. Спасибо. |
|
Отправлено: 11:47, 07-06-2014 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Import-Module ActiveDirectory $FContacts = Import-Csv -Delimiter ";" -Path "C:\SCRIPTS\CreateContactsCSV\ContactsList.csv" | Foreach { $_ | Add-Member -Type NoteProperty -Name Name -Value ($_.FN +" "+ $_.LN) -PassThru } $AContacts = Get-ADObject -LDAPFilter "objectCLASS=contact" -SearchBase 'OU=Contacts,DC=domain,DC=local' -Property proxyAddresses,mobile,title Compare-Object $FContacts $AContacts -Property Name -IncludeEqual -PassThru | Foreach { if($_.SideIndicator -eq "==") { $T = $_.T $M = $_.M $E = $_.E $N = $_.Name $AContacts | Where {Name -eq $N -and proxyAddresses -match $E -and (Mobile -ne $M -or Title -ne $T)} | Foreach { Set-ADObject -Identity $_.DistinguishedName -Replace @{mobile=$M;title=$T} } } if($_.SideIndicator -eq "=>") { Remove-ADObject -Identity $_.DistinguishedName -Confirm:$false } if($_.SideIndicator -eq "<=") { $FN = $_.FN $LN = $_.LN $N = ($_.FN +" "+ $_.LN) $A = ($_.FN +"."+ $_.LN) $T = $_.T $M = $_.M $OU = $_.OU $SMTP = 'SMTP:' + $_.E New-MailContact ` -FirstName $FN ` -LastName $LN ` -Name $N ` -Alias $A ` -OrganizationalUnit $OU ` -ExternalEmailAddress $SMTP Get-ADObject -LDAPFilter "(&(objectClass=contact)(name=$N))" -SearchBase 'OU=Contacts,DC=domain,DC=local' | Foreach { Set-ADObject $_ -Replace @{mobile=$M;title=$T} Add-DistributionGroupMember -Identity "MY_GROUP" -Member $_.DistinguishedName } } } |
Отправлено: 19:44, 07-06-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Kazun,
огромнейшее ВАМ спасибо. Великолепное решение. Но есть маленькие нюансы, если не сложно помогите понять и разобраться. 1. Выводит ошибку при выполнении этой части кода: $AContacts | Where {Name -eq $N -and proxyAddresses -match $E -and (Mobile -ne $M -or Title -ne $T)} | Foreach { Set-ADObject -Identity $_.DistinguishedName -Replace @{mobile=$M;title=$T} The term 'Name' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At C:\TEMP\SCRIPTS\CreateContactsCSV\TEST.ps1:16 char:27 + $AContacts | Where {Name <<<< -eq $N -and proxyAddresses -match $E -and (Mobile -ne $M -or Title -ne $T)} | Foreach { + CategoryInfo : ObjectNotFound: (Name:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Вот сама ошибка: Add-DistributionGroupMember : Couldn't find object "domain.local/Contacts/Barak Obama". Please make sure that it was spelled correctly or specif y a different object. At C:\TEMP\SCRIPTS\CreateContactsCSV\TEST.ps1:45 char:31 + Add-DistributionGroupMember <<<< -Identity "MY_GROUP" -Member $_.DistinguishedName + CategoryInfo : NotSpecified: (0:Int32) [Add-DistributionGroupMember], ManagementObjectNotFoundException + FullyQualifiedErrorId : F1FA247D,Microsoft.Exchange.Management.RecipientTasks.AddDistributionGroupMember Еще раз СПАСИБО. |
Отправлено: 21:32, 07-06-2014 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:44, 08-06-2014 | #4 |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Kazun,
Спасибо Вам большое 1) Сработало. Прошу прощения, забыл изначально сообщить Вам, что запускаю скрипт на Windows Server 2008 R2 с PowerShell 2.0. По началу тоже была такая мысль, внести аналогичные изменения. 2) Цитата Kazun:
Спасибо Вам большое за отзывчивость и помощь. |
||
Отправлено: 14:02, 08-06-2014 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
V. 2007 - Отправка на группу рассылки, в которой состою я. | meateron | Microsoft Exchange Server | 2 | 20-07-2012 11:28 | |
PowerShell - [решено] Динамическое создание и изменение групп рассылки в Outlook (DistList) | dosperados | Скриптовые языки администрирования Windows | 4 | 04-04-2012 14:48 | |
V. 2007 - Ошибка при попытке добавить множество контактов в список рассылки в Outlook | Dmitriy_K | Microsoft Exchange Server | 1 | 03-04-2009 10:56 | |
[решено] Создание контактов в AD | Delirium | Microsoft Windows NT/2000/2003 | 2 | 05-06-2008 08:30 | |
Exchange 2003: создание списка рассылки | keyF | Microsoft Exchange Server | 0 | 01-01-2006 18:59 |
|