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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Произвести действия для пользователя основываясь на группе в AD

Ответить
Настройки темы
VBS/WSH/JS - [решено] Произвести действия для пользователя основываясь на группе в AD

Новый участник


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

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


Доброго времени суток многоуважаемые.

Есть идея реализовать следующую схему:
есть OU, в котором произвольное число групп. (targetGP01,targetGP02.... targetGPXX)
есть набор дейсвий в CMD, название которого равно названию группы.
пытаюсь обработать так:

Код: Выделить весь код
Function GpRunObject(strGpName)
Set RunObj = wscript.createobject("wscript.shell")
 'запуск тестового CMD
 RunObj.run ("cmd.exe /q /c z:\"&strGPname&".cmd") 
 wscript.Quit
 End Function
 
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserDomain = WshNetwork.UserDomain
Set UserObj = GetObject("WinNT://" & UserDomain & "/" & WshNetwork.UserName)
For Each GroupObj in UserObj.Groups

'case или if не принципиально.
If GroupObj.Name = "TargetGP01" Then
		GpRunObject(GroupObj.Name)
End If
If GroupObj.Name = "TargetGP02" Then
		GpRunObject(GroupObj.Name)
End If
 
Next
Как бы рабоатает, но хотелось бы сделать следующие
получить список групп из OU в массив,
циклом пробежать по этому списку, проверяя вхождения пользователя,
если вхождение есть вызвать функцию передав в качестве параметра имя группы.

мозгов не хватает, помогите

Отправлено: 05:48, 25-10-2012

 

Старожил


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

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


R3pl1CID, объекты групп в контейнере подразделения имеют один и тот же уровень вложенности или разные?

Отправлено: 07:02, 25-10-2012 | #2



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

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


Новый участник


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

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


Группы в одном контейнере, увровень вложенности один и тот же.
вложение групп в друг друга и в другие группы не предпологается.

OU: "TargetOU"
-targetGP0
-targetGP1
-targetGPxx

Так же в группах предпологаются только объекты типа пользователь.
Пользователь может принадлежать нескольким группам (targetGP..) одновременно.

Отправлено: 07:27, 25-10-2012 | #3


Старожил


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

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


Цитата R3pl1CID... :
Пользователь может принадлежать нескольким группам (targetGP..) одновременно
И что делать в этом случае?

Отправлено: 08:35, 25-10-2012 | #4


Ветеран


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

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


Идея не лучшая, т.к. совершенно ненаглядная.
IMHO правильнее для каждого набора действий создать отдельный CMD, и ограничить политика запуска этих cmd соответствующими группами.

Отправлено: 09:38, 25-10-2012 | #5


Новый участник


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

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


DmitriiV,
Задача функции, получить парамер и запустить пакетник парметр.сmd
Пример:
пользователь состоит в группах Uchet и ShareU
ShareU монтирует сетевой диск
Uchet кладет ярлык на рабочий стол ярлычек и добавляет в реест параметры
Зачем так сложно см.ниже

Busla,
Я отдаю себе отчет в том, что я изобретаю велосипед.

Такой велосипед пишу по двум причинам
1 виртуальная среда в которой ОС отдельно ПО отдельно профили отдельно. Хотя часть всей работы делает сам ESX

2 есть WEB интрерфейс, который является стартовой страничкой пользователя.
На этом интрефейсе например есть иконка Гарант, 2Гис , сетевой принтер и т.д.
Пользователь ставит галочку Гарант, и сохранить (скрип который вызовет веб интерфес добавит пользователя в нужную группу и повторно запустит VBS логин скрипт)
Через несколько секунд пользователь получает сервис.

Скрипты определяют раздность ОС, необходимые пути и пр. в некоторых есть adminlink
Через GPO тоже реализуемо, не столь наглядно для конечного пользоватаеля
Нагляднось... администраторов на удаленных площадках всеравно нет.


Написал так, но не работает
GroupObj.name = возвращает название группы в которой пользователь состоит
objGroup.Name = а вот тут попа, имя группы возвращается в виде CN=Имя группы.
Код: Выделить весь код
Function GpRunObject(strGpName)
	Set RunObj = wscript.createobject("wscript.shell")
 	RunObj.run ("cmd.exe /q /c z:\"&strGPname&".cmd") 
 	WScript.Quit
End Function


Set objOU = GetObject("LDAP://OU=TaggetOU,DC=testdc,DC=ru")
objOU.Filter = Array("Group")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserDomain = WshNetwork.UserDomain

Set UserObj = GetObject("WinNT://" & UserDomain & "/" & WshNetwork.UserName)
For Each GroupObj in UserObj.Groups
	For Each objGroup in objOU
       		If lcase(GroupObj.name) = LCase(objGroup.Name) Then
		GpRunObject(GroupObj.name)
		End If
	Next
Next

Отправлено: 11:16, 25-10-2012 | #6


Старожил


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

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


Цитата R3pl1CID:
Задача функции, получить парамер и запустить пакетник...
Стало быть, функция должна вызываться на каждое вхождение пользователя в ту или иную группу.
Пример одного из возможных вариантов:
Код: Выделить весь код
Dim objItem, strDomain, strUser
Const strOU = "OU=TargetOU,"
strDomain = GetObject("LDAP://RootDSE").Get("DefaultNamingContext")
strUser = CreateObject("ADSystemInfo").UserName
For Each objItem In GetObject("LDAP://" & strOU & strDomain)
    If StrComp(objItem.Class, "group", vbTextCompare) = 0 Then
        If objItem.IsMember("LDAP://" & strUser) Then
            Call GpRunObject(objItem.cn)
        End If
    End If
Next
WScript.Quit 0
Удалите оператор WScript.Quit из кода функции. Этого требует алгоритм решения задачи.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:43, 25-10-2012 | #7


Новый участник


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

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


DmitriiV,
Цитата:
Стало быть, функция должна вызываться на каждое вхождение пользователя в ту или иную группу.
.. Из определенной OU. Совершенно верно.

Как все просто то!
Код: Выделить весь код
objItem.IsMember
проверяет членсво в группе.
Теперь сижу с идиотской улыбкой и пытаюсь понять зачем я пытался сравнивать имена групп.

DmitriiV, спасибо Вам большое за помощь!

Отправлено: 12:16, 25-10-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Произвести действия для пользователя основываясь на группе в AD

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Поиск в определенной группе конкретного пользователя ejik_off Скриптовые языки администрирования Windows 1 26-12-2011 10:15
Безопасность - напоминание о истечении срока действия сертификата пользователя lohness Windows Server 2008/2008 R2 2 28-11-2011 14:29
[решено] useraccounts Нет пользователя в группе Опытные пользователи fseto Автоматическая установка Windows 2000/XP/2003 18 13-09-2011 13:55
[решено] Javascript - выбор действия в зависимости от ответа пользователя (confirm) Котяра Вебмастеру 4 22-11-2008 12:33
Доступ - Как ограничить некоторые действия для пользователя Тест..? united Хочу все знать 34 27-11-2007 19:47




 
Переход