![]() |
PS: Синхронизация контактов Outlook`a с AD
Пишу скрипт по синхронизации Email адресов, которые хранятся в АД и контактов в Outlook`е.
Смысл в том, что скрипт по добавлению Email адресов из АД в Outlook уже есть он описан на форуме тут Но при каждом запуске скрипта в Outlook`e появляются дубликаты одних и тех же записей. Я хочу написать скриптик который бы делал вот что: 1) При импорте проверял бы есть такой контакт в Outlook`e, если есть то повторно не импортировать, если же нету то импортировался но с дополнительным полем которое бы указывало на то, что этот объект импортирован из АД 2) Потом бы проверялись контакты в Outlook`e если контакт имеет поле импортирован то такойже объект ищется в АД если его там нету то этот контакт удаляется из Outlook`а, если же контакт создал сам пользователь и у него нету поля которое показывает что он создан при импорте то этот контакт остается без изменения. так вот я не знаю как правильно реализовать то что я хочу и я пошел обходным путем (если кто знает как сделать правильней и лучше подскажите!!!): Я сначала удаляю контакты из Outlook`а в которых присутствуют поля означающие что этот контакт импортирован (у меня за это отвечает два поля $_.Mileage и $_.BusinessHomePage) контакты созданные пользователем не трогаем. Потом необходимо проделать импорт из АД в Outlook с полями означающими импорт. так вот у меня неправильно работает удаление контактов с полем означающим импорт. я делаю это так: PHP код:
Почему так, помогите!!! Или предложите другой метод, всем предложения решения задачи буду рад!!! |
Что-то ни кто даже слово не напишет) что все боятся запустить у себя этот скрипт!? Он ничего не удалит если не будет в контакте особых полей ($_.Mileage и $_.BusinessHomePage) с нужными значениями. только если два этих поля удовлетворили условию тогда этот контакт удалиться...
Мне нужен совет гуру, почему при тесте без использования $_.delete() все работает как положено, а с ним неправильно!!! Ну или вообще как подругому сделать) |
dosperados, возможно, это как-то связано с перемещением по коллекции. Я с чем-то подобным при работе с коллекциями сталкивался и под WSH.
Попробуйте работать не с коллекцией, а с выборкой по условию: Код:
$outlook = New-Object -ComObject Outlook.Application |
Iska, Спасибо твой метод работает как положенно, но кто знает как реализовать мою задумку не через попу как сейчас, а правильно!?
|
Такой вопрос: я создаю в папке "\\Outlook\Контакты" подпапку "Контакты моей компании" саму папку я успешно создаю, но если начинаешь создавать контакты в ней, они сохраняется в папке "Контакты", а мне надо чтобы он сохранился в подпапке "Контакты моей компании".
Кто решал такую проблему подскажите... PHP код:
|
dosperados, попробуйте так:
Код:
$oOutlook = New-Object -ComObject Outlook.Application |
Iska, Ты гений так легко и просто решил две мои проблемы! Огромное тебе, человеческое спасибо!
Iska, Можно ещё один глупый вопрос зачем буковка o в переменных $oContact, она что-то значит или просто для красоты? |
Iska, Будь добр подскажи ещё раз! По отдельности все что ты мне помогал работает, а вот когда совмещаю все в одно, то работает не совсем так как нужно... папку создает и в ней контакты тоже, но удалить из папки контакты не получается.
PHP код:
|
Цитата:
Цитата:
И на что мне ориентироваться? На код в предыдущем посте или тот, что Вы прислали в личку? Определитесь. |
Не работает вот эта часть скрипта, когда контакты созданы в подпапке т.е. ("\\Outlook\Контакты\контакты компании") невозможно их удалить.
В этой части скрипта я пытался получить папку "контакты компании" и методом Find найти все содержимое и в цикле удалить каждый найденный элемент, но мне возвращается ошибка что метода FindNext() нет для данного объекта. и что я делаю неправильно я непойму... PHP код:
|
Спасибо, теперь ясно. Посмотрим.
|
Смотрите, как это работает в целом:
Код:
$oOutlook = New-Object -ComObject Outlook.Application |
Iska, Ты крут! так работает... подскажи книжки по PS чтобы поизучать, желательно рускоязычные) Ещё раз хочу выразить тебе свою огромную презнательность!!! Спасибо за помощь!!!
|
Цитата:
Цитата:
|
Накидал модуль для PowerShell - ITG.Outlook. Пока в нём только обработку контактов и реализовал. Примеры кода с применением модуля привёл у себя в блоге - http://sergey-s-betke.blogs.novgaro....from-csv-or-ad.
Пример кода: Код:
Get-ADUser ` |
Время: 07:55. |
Время: 07:55.
© OSzone.net 2001-