|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Произвести действия для пользователя основываясь на группе в AD |
|
VBS/WSH/JS - [решено] Произвести действия для пользователя основываясь на группе в AD
|
Новый участник Сообщения: 7 |
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать R3pl1CID, объекты групп в контейнере подразделения имеют один и тот же уровень вложенности или разные?
|
Отправлено: 07:02, 25-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Группы в одном контейнере, увровень вложенности один и тот же.
вложение групп в друг друга и в другие группы не предпологается. OU: "TargetOU" -targetGP0 -targetGP1 -targetGPxx Так же в группах предпологаются только объекты типа пользователь. Пользователь может принадлежать нескольким группам (targetGP..) одновременно. |
Отправлено: 07:27, 25-10-2012 | #3 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Цитата R3pl1CID... :
|
|
Отправлено: 08:35, 25-10-2012 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Идея не лучшая, т.к. совершенно ненаглядная.
IMHO правильнее для каждого набора действий создать отдельный CMD, и ограничить политика запуска этих cmd соответствующими группами. |
|
Отправлено: 09:38, 25-10-2012 | #5 |
Новый участник Сообщения: 7
|
Профиль | Отправить 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
|
Профиль | Отправить 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 |
|
Отправлено: 11:43, 25-10-2012 | #7 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать DmitriiV,
Цитата:
Как все просто то! проверяет членсво в группе. Теперь сижу с идиотской улыбкой и пытаюсь понять зачем я пытался сравнивать имена групп. DmitriiV, спасибо Вам большое за помощь! |
|
Отправлено: 12:16, 25-10-2012 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|