Лучший отвечающий
Управление контакт-листами в OCS 2007

Вопрос
-
Форумчане, поделитесь, пожалуйста, опытом как осуществляется subj. Возможно, у кого-то есть мануал поэтому вопросу, другая документация или ссылка на ресурс с подобным обсуждением?
Интересует не самостоятельное формирование контакт-листа пользователем, а возможность административно определять контакт-лист. В идеале, чтобы эти листы можно было формировать автоматически (задавая условия), как адресные листы в эксчендче . Возможно ли такое или я размечталась?
25 июня 2007 г. 8:36
Ответы
-
Сохранился все тот же lcsaddcontacts.wsf для добавления контактов пользователям. (Логику реализуем отдельным скриптом.)
Так что, как это обычно бывает в жизни, мечта осуществима, но только при собственных усилиях.
25 июня 2007 г. 9:16Модератор -
Вот переделал функцию для удаления группы по ее имени для заданного пользователя. Вам только надо организовать вызов этой функции из скрипта LCSAddContacts.wsf (начинать надо от функции ParseUserLineItem и далее, т.е. надо получить strPrimaryURI, потом UserInstanceID) Думаю справитесь
Code Snippet'-------------------------------------------------------------------------------
' Function: DeleteGroup
' Description: Deletes Group for given a User
' Parameters: UserInstanceID, GroupName
' Returns: Variant rReturn - (Either -1, Err.Number or 0)
'-------------------------------------------------------------------------------
Function DeleteGroup(ByVal UserInstanceID, ByVal GroupName)
Dim vReturn : vReturn = -1Dim oInstances
Dim oInstanceSet oInstances = GetObject("winmgmts:\\" & cComputer).ExecQuery("SELECT * FROM " & cWMIUserContactGroupClass & " WHERE UserInstanceID = '" & UserInstanceID & "'")
If Not oInstances.Count < 1 Then
For Each oInstance In oInstances
If StrComp(GroupName, oInstance.Name) = 0 Then
On Error Resume Next
oInstance.Delete_
If Err.number = vbEmpty Then
WScript.Echo "[+] Delete successful for Group: " & GroupName
vReturn = 0
Else
WScript.Echo "[-] Delete failed for Group: " & GroupName & " " & Err.number & ": " & Err.Description
vReturn = Err.number
End If
On Error Goto 0
End If
Next
End If
DeleteGroup = vReturn
End FunctionВот WMI-класс для группы. Тут указаны параметры. Фактически можно искать по имени группы (как я сделал) и по ExternalURL но что это я не знаю
class MSFT_SIPESUserContactGroupData
{
string ExternalURL;
[key] uint32 GroupID;
string Name;
[key] string UserInstanceID;
};27 июня 2007 г. 4:15Модератор
Все ответы
-
Сохранился все тот же lcsaddcontacts.wsf для добавления контактов пользователям. (Логику реализуем отдельным скриптом.)
Так что, как это обычно бывает в жизни, мечта осуществима, но только при собственных усилиях.
25 июня 2007 г. 9:16Модератор -
Спасибо за помощь.
Все работает, за исключением одного: названия групп русскими буквами кракозябрятся. Вы с этим не сталкивались? Может, это с английским клиентом связано?
25 июня 2007 г. 13:14 -
Осилила! Все работает!25 июня 2007 г. 18:20
-
Умняша!26 июня 2007 г. 4:12Модератор
-
Не смогла сделать удаление созданных групп.
Команда cscript lcsaddcontacts.wsf /usersfile: dit.txt /contactsfile: dit.txt /delete
удаляет контакты из контакт-листа, но оставляют группы... А я поначалу с русским не разобралась и насоздавала групп с нечитаемыми названиями
В РесорсКите неутешительно написано:
Do not specify the optional /contactsGroup option when deleting contacts. Once the contact group has been created it cannot be deleted by using this script; it will have to be deleted manually.
Пользователь может например переименовать группу в своем контакт-листе, и при следующем импорте группа создастся заново и группы будет уже 2. Или же переименуют подразделение. Вобщем, контакт-листы склонны к засорению. Есть ли возможность перед импортом зачистить полностью контакт-лист пользователю? Может контакт-лист хранится таблицей или файликом в шаре AddressBook?26 июня 2007 г. 20:55 -
Вот переделал функцию для удаления группы по ее имени для заданного пользователя. Вам только надо организовать вызов этой функции из скрипта LCSAddContacts.wsf (начинать надо от функции ParseUserLineItem и далее, т.е. надо получить strPrimaryURI, потом UserInstanceID) Думаю справитесь
Code Snippet'-------------------------------------------------------------------------------
' Function: DeleteGroup
' Description: Deletes Group for given a User
' Parameters: UserInstanceID, GroupName
' Returns: Variant rReturn - (Either -1, Err.Number or 0)
'-------------------------------------------------------------------------------
Function DeleteGroup(ByVal UserInstanceID, ByVal GroupName)
Dim vReturn : vReturn = -1Dim oInstances
Dim oInstanceSet oInstances = GetObject("winmgmts:\\" & cComputer).ExecQuery("SELECT * FROM " & cWMIUserContactGroupClass & " WHERE UserInstanceID = '" & UserInstanceID & "'")
If Not oInstances.Count < 1 Then
For Each oInstance In oInstances
If StrComp(GroupName, oInstance.Name) = 0 Then
On Error Resume Next
oInstance.Delete_
If Err.number = vbEmpty Then
WScript.Echo "[+] Delete successful for Group: " & GroupName
vReturn = 0
Else
WScript.Echo "[-] Delete failed for Group: " & GroupName & " " & Err.number & ": " & Err.Description
vReturn = Err.number
End If
On Error Goto 0
End If
Next
End If
DeleteGroup = vReturn
End FunctionВот WMI-класс для группы. Тут указаны параметры. Фактически можно искать по имени группы (как я сделал) и по ExternalURL но что это я не знаю
class MSFT_SIPESUserContactGroupData
{
string ExternalURL;
[key] uint32 GroupID;
string Name;
[key] string UserInstanceID;
};27 июня 2007 г. 4:15Модератор -
Я решила вопрос грубейшим способом: удалением у всех пользователей всех контактов LCSAddContacts и зачисткой таблицы ContactGroup в базе rtc
.
Но такой метод в решении задачи ежедневной синхронизации контакт-листа с АД, конечно же, не годится - очищается группа Recent contacts. Описание класса видела, но скриптом ничего получить не удалось
в sql-ной таблице же все имена в бинарном виде
'On error resume next
Const cComputer = "."
Const cWMINameSpace = "root/cimv2"
Const cWMIUserContactGroupClass = "MSFT_SIPESUserContactGroupData"
Dim oInstances
Dim oInstance
Set oInstances = GetObject("winmgmts:\\" & cComputer).Get(cWMIUserContactGroupClass)
For Each oInstance In oInstances
wscript.echo (oInstance.name)
wscript.echo (oInstance.ExternalURL)
wscript.echo (oInstance.groupId)
wscript.echo (oInstance.UserInstanceID)
NextExternalURL это https://сервер/Abs/Ext.
Спасибо за решение , попробую ваш скрипт для корректного
уничтожения старых групп.
27 июня 2007 г. 5:10 -
ExternalURL поле используется для GroupExpansion (публикации Distribution Group в контакт листах пользователей) в этом поле должна стоять строка вида
"<groupExtension groupType="dg""><email>ИмяГруппы@СипДомен</email></groupExtension>"
тогда, можно управлять контакт листами с помощью членства в группах АД
4 июля 2008 г. 11:56 -
добрый день уважаемые.
а как нибудь попроще есть возможность создать контакт лист. поставил консоль OCSCM все бы хорошо, создал пользователь добавил в группы. проблема случилась позже после достижения в 150 контактов добавить пользователей стало невозможно. оснастка пишет "неопределённая ошибка". думал ограничения, поставил на сервере 300 пользователей, то же проделал и в групповых польитиках. может кто сталкивался с подобной проблемой?
25 августа 2008 г. 8:25