Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Динамическое создание и изменение групп рассылки в Outlook (DistList)

Ответить
Настройки темы
PowerShell - [решено] Динамическое создание и изменение групп рассылки в Outlook (DistList)

Аватара для dosperados

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: dosperados
Дата: 03-04-2012
Изображения
Тип файла: jpg distlist.jpg
(95.0 Kb, 6 просмотров)
Стоит задача создавать в Outlook группы рассылок (или она же "группа контактов") (Distanation List). Путем проб и ошибок я нашел как создать объект "группа рассылок"

Код: Выделить весь код
$VerbosePreference = "Continue"
Write-Verbose "Подключаемся к Outlook"
$oOutlook    = New-Object -ComObject Outlook.Application

Write-Verbose "Получаем MAPI"
$oNameSpace  = $oOutlook.GetNamespace("MAPI")
Write-Verbose "Получаем папку Контакты"
$oMAPIFolder = $oNameSpace.GetDefaultFolder(10)
Write-Verbose "Создаем папку"
    $oMyMAPIFolder = $oMAPIFolder.Folders.Add("Контакты организации")
	Write-Verbose "Устанавливаем на эту папку галочку ""Показывать как адресную книгу"""
	$oMyMAPIFolder.ShowAsOutlookAB = "True"
Write-Verbose "Получаем содержимое папки контактов"
$cContacts = $oMyMAPIFolder.Items

$a2 = $cContacts | select -Index 2
$a5 = $cContacts | select -First 5

Write-Verbose "Создание объекта ""DistList"""

   $oContact = $oMyMAPIFolder.Items.Add(7)
   $oContact.DLname = "distlist"
   $oContact.body = "Описание группы рассылки"
   $oContact.AddMember($a2)
   #$oContact.AddMembers($a5)
    #Сохраняем контакт
    $oContact.Save()

Я не могу понять как добавить в созданную группу рассылки адресы на которые будет рассылка.
пробовал добавлять массив с адресами контактов, вручную адреса почты.
Самое главное это научится добавлять и удалять из этого объекта адреса контактов.
Заранее благодарен за помощь!!!!!

Созданные объект имеет вот такие поля:
читать дальше »

Application : Microsoft.Office.Interop.Outlook.ApplicationClass
Class : 69
Session : Microsoft.Office.Interop.Outlook.NameSpaceClass
Parent : System.__ComObject
Actions : System.__ComObject
Attachments : System.__ComObject
BillingInformation :
Body : Тело группы рассылки
Categories :
Companies :
ConversationIndex : 01CD1140C64F7274E4C9F6ED4906A40075EC151ABE8D
ConversationTopic : distlist
CreationTime : 03.04.2012 9:23:36
EntryID : 0000000059AD1D58D7D0254DA4C3F892D929361C84A92500
FormDescription : System.__ComObject
GetInspector : System.__ComObject
Importance : 1
LastModificationTime : 03.04.2012 9:23:36
MAPIOBJECT : System.__ComObject
MessageClass : IPM.DistList
Mileage :
NoAging : False
OutlookInternalVersion : 146109
OutlookVersion : 14.0
Saved : True
Sensitivity : 0
Size : 1620
Subject : distlist
UnRead : False
UserProperties : System.__ComObject
DLName : distlist
MemberCount : 0
CheckSum : 0
Members : {}
OneOffMembers : {}

Links : System.__ComObject
DownloadState : 1
ItemProperties : System.__ComObject
MarkForDownload : 0
IsConflict : False
AutoResolvedWinner : False
Conflicts : System.__ComObject
PropertyAccessor : System.__ComObject
TaskSubject : distlist
TaskDueDate : 01.01.4501 0:00:00
TaskStartDate : 01.01.4501 0:00:00
TaskCompletedDate : 01.01.4501 0:00:00
ToDoTaskOrdinal : 01.01.4501 0:00:00
ReminderOverrideDefault : False
ReminderPlaySound : False
ReminderSet : False
ReminderSoundFile :
ReminderTime : 01.01.4501 0:00:00
IsMarkedAsTask : False
ConversationID :
RTFBody : {123, 92, 114, 116...}

Отправлено: 05:55, 03-04-2012

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$res=$oOutlook.Session.CreateRecipient($a2.Email1Address)
$res.Resolve()
$oContact.AddMember($res)
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 03-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для dosperados

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun, Спасибо, но это какое то корявое решение...
Хочется чтобы все было как положенно.

Может быть, можно как то использовать.
Код: Выделить весь код
$oOutlook.Session.GetRecipientFromID
или если можно было бы сделать вот так
Код: Выделить весь код
$res=$oOutlook.Session.CreateRecipient($a2)
Как я понимаю в этом методе
Код: Выделить весь код
$res=$oOutlook.Session.CreateRecipient($a2)
Posh не может сопоставить свойства объекта $a2 к свойствам вновь созданного $res.
возможно ли ему явно указать что куда ставить.
что-то на подобие вот этого
Код: Выделить весь код
Set objRcpnt = outlook.Session.CreateRecipient(arrData(i, 2))

Отправлено: 08:14, 04-04-2012 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


А что в нем кривого?

$res=$oOutlook.Session.CreateRecipient($a2.Email1Address)
$oOutlook.Session.GetRecipientFromID($res.EntryID)

Как это не может сопоставит? Все прекрасно отрабатывает и вновь он ничего нового не создает ,а только разрешает в существующие.Для явного указания ,следует указать определенное свойство или создать массив новый,в который включить имена и адрес,и уже подставлять по индексу,но смысл непонятен,когда уже есть массив с требуемыми свойствами.

Отправлено: 11:27, 04-04-2012 | #4


Аватара для dosperados

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg 111.jpg
(46.2 Kb, 10 просмотров)

Цитата Kazun:
А что в нем кривого? »
Некрасиво что он имя и адрес ставит одно и тоже...
http://forum.oszone.net/attachment.p...1&d=1333535825

Цитата Kazun:
Как это не может сопоставит? »
Я имею введу что вот этот код не может на автомате сопаставить свойства объекта $a2 к свойствам вновь созданного $res.
Код: Выделить весь код
$res=$oOutlook.Session.CreateRecipient($a2)
Цитата Kazun:
но смысл непонятен,когда уже есть массив с требуемыми свойствами. »
Может быть и нет необходимости создавать массив, но как я понял
$oOutlook.Session.CreateRecipient(string Recipientname) имеет только 1 параметр и написать вот так
Код: Выделить весь код
$res=$oOutlook.Session.CreateRecipient($a2.Email1Address, $a2.Email1DisplayName)
уже не получится написать.

Отправлено: 14:48, 04-04-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Динамическое создание и изменение групп рассылки в Outlook (DistList)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Создание групп пользователей в AD и настройка их параметров Vladimir_17 Microsoft Windows NT/2000/2003 7 12-07-2013 12:03
VBS/WSH/JS - Массовое создание пользователей, компьютеров, OU и групп. Anton04 Скриптовые языки администрирования Windows 12 30-07-2009 00:53
V. 2007 - Ошибка при попытке добавить множество контактов в список рассылки в Outlook Dmitriy_K Microsoft Exchange Server 1 03-04-2009 10:56
Exchange 2003: создание списка рассылки keyF Microsoft Exchange Server 0 01-01-2006 18:59
Динамическое изменение страницы... Kenwood Вебмастеру 5 29-03-2004 14:26




 
Переход