|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Подключение сетевых дисков на основе принадлежности пользователя группе |
|
VBS/WSH/JS - Подключение сетевых дисков на основе принадлежности пользователя группе
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Приветик всем!
помогите плиз с небольшим глюком по скрипту с которым столкнулся. Если быть совсем точным то происходит следующее сам скрипт вроде работает норм но глюк состоит в том что он нормально отрабатывает у тех пользователей домена которые являются только пользователями домена, у любых других пользователей которые имеют более расширенные права например администраторы или администраторы домена данный скрипт не работает (( Однако если же запускать вручную то все норм ! Тело скрипта прилагаю ниже ) Скрипт подключает сетевые диски на основе принадлежности конкретного пользователя какой либо группе. Option Explicit 'On Error Resume Next Dim WshShell, WshNetwork Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj UserGroups="" Set WshShell = WScript.CreateObject("WScript.Shell") Set objSysInfo = CreateObject("ADSystemInfo") strUserDN = objSysInfo.userName Set UserObj = GetObject("LDAP://" & strUserDN) For Each GroupObj In UserObj.Groups UserGroups=UserGroups & "[" & GroupObj.Name & "]" Next 'MsgBox strUserDN "Member of "& UserGroups If InGroup("Отдел информационно-вычислительных технологий") Then MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "X:", "\\ASKA-DC\it\Разное" end if If InGroup("Отдел Сметный") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел автоматизации и слаботочных систем") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел архитектурный") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел водоснабжения и водоотведения") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел генерального планирования") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел конструкторский") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел отопления и вентиляции") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел технологический") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел электроснабжения") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" end if If InGroup("Отдел секретариат") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "P:", "\\ASKA-DC\common\Plotter" MapDrv "T:", "\\ASKA-DC\common\Временная" end if If InGroup("Отдел главных инженеров проекта") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" MapDrv "P:", "\\ASKA-DC\common\Plotter" end if If InGroup("Отдел главного инженера") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" MapDrv "P:", "\\ASKA-DC\common\Plotter" end if If InGroup("Отдел оформления выдачи и хранения проектной документации") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" MapDrv "P:", "\\ASKA-DC\common\Plotter" end if If InGroup("Отдел кадров") Then MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "K:", "\\ASKA-DC\dir\Отдел кадров" end if If InGroup("Отдел планово-экономический") Then MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "V:", "\\ASKA-DC\dir\ПЭО" end if If InGroup("Дирекция") Then MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "V:", "\\ASKA-DC\dir\ПЭО" end if If InGroup("Отдел главных архитекторов проекта") Then MapDrv "Z:", "\\ASKA-DC\proekt\Основной" MapDrv "Y:", "\\ASKA-DC\proekt\Архив" MapDrv "T:", "\\ASKA-DC\common\Временная" MapDrv "S:", "\\ASKA-DC\proekt\Справочный материал" MapDrv "P:", "\\ASKA-DC\common\Plotter" '========================================================================== ' ' Function MapDrv(DrvLet, UNCPath) ' ' DrvLet - Буква устройства ' UNCPath - Сетевой путь ' ' COMMENT: Подключение сетевых дисков с записью ошибок в EventLog ' '========================================================================== Function MapDrv(DrvLet, UNCPath) Dim WshNetwork,objFSO ' Object variable Dim Msg Set WshNetwork = WScript.CreateObject("WScript.Network") Set objFSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next If objFSO.DriveExists(DrvLet) Then WshNetwork.RemoveNetworkDrive DrvLet, true, true End If WshNetwork.MapNetworkDrive DrvLet, UNCPath Select Case Err.Number Case 0 ' No error Case -2147023694 WshNetwork.RemoveNetworkDrive DrvLet, true, true WshNetwork.MapNetworkDrive DrvLet, UNCPath Case -2147024811 WshNetwork.RemoveNetworkDrive DrvLet, true, true WshNetwork.MapNetworkDrive DrvLet, UNCPath Case Else Msg = "Mapping network drive error: " & _ CStr(Err.Number) & " 0x" & Hex(Err.Number) & vbCrLf & _ "Error description: " & Err.Description & vbCrLf Msg = Msg & "Domain: " & WshNetwork.UserDomain & vbCrLf Msg = Msg & "Computer Name: " & WshNetwork.ComputerName & vbCrLf Msg = Msg & "User Name: " & WshNetwork.UserName & vbCrLf & vbCrLf Msg = Msg & "Device name: " & DrvLet & vbCrLf Msg = Msg & "Map path: " & UNCPath WshShell.LogEvent 1, Msg, "\\aska-dc" End Select End Function '========================================================================== ' ' Function InGroup(strGroup) ' ' strGroup - группа, принадлежность к которой проверяем ' ' COMMENT: проверка принадлежности пользователя к группе ' '========================================================================== Function InGroup(strGroup) InGroup=False If InStr(UserGroups,"[CN=" & strGroup & "]") Then InGroup=True End If End Function End If |
|
Отправлено: 15:04, 24-10-2013 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать ну если скрипт работает у всех , кроме администраторов, может дело не в скрипте, а в настройках безопасности ?
Посмотрите настройки безопасности политики , или же gpresult из-под "пользователя который имеет более расширенные права" запустите |
Отправлено: 15:32, 24-10-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Да вроде снова все перепроверил нету ошибок в отработке GPда и с безопасностью все норм ) , а вот gpresult говорит что скрипт есть загружается но результат таков у пользователя одного и того же сетевые диски могут подключится или нет в зависимости какие права есть у учетной записи если только "Пользователь домена" до диски подключаются, "Пользователь домена" и "Администратор домена " то уже нет ( , хотя при этом данный пользователь находится по умолчанию в одной и той-же группе по которой происходит проверка принадлежности того или иного пользователя к группе которые указанны в скрипте.
Честно ломаю голову уже 2 недели и не могу понять в чем загвоздка ))) |
Отправлено: 16:49, 24-10-2013 | #3 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Дайте что ли вывод команды gpresult
Через мастер моделирования групповой политики ваш случай смотрели ? |
Отправлено: 17:05, 25-10-2013 | #4 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Ещё как вариант ...
Может где-то есть loopback policy ? Вы сами строили всю инфраструктуру или разбираетесь с уже существующей ? |
|
Отправлено: 18:28, 25-10-2013 | #5 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать ну как вам сказать )
1) смотрел через мастер моделирования там про скрипт нефига не пишет, за исключением что скрипт загружен в профиль пользователя причем и при удачной и неудачной попытке. 2) нет нету все перепроверял по нескольку раз 3) а вот с инфраструктурой пришлось сначала помучатся потом плюнул и пришлось все делать с нуля поскольку предыдущий Вася Пупкин убил всю её напрочь если быть совсем точным то GP вообще не работали или не реагировали на изменение даже если делать команду на ПК gpupdate /force. сейчас домен новый все норм работает потихоньку от оставшихся глюков избавляюсь )) Заранее скажу что миграцию AD не стал делать все поднял с нуля... AD, DNS, DHCP, DFS и так далее короче все с нуля приходится переделывать (( просто не совсем понимаю почему на бесправной учетной записи скрипт отрабатывает а на полноценной учетной записи не хочет ) прям такое впечатление что прав даю слишком много ( аж смешно звучит ) да самое главное скрипт привязан к основной GP в профиле пользователя которая распространяется на все контейнеры в домене. |
Последний раз редактировалось kusaika, 27-10-2013 в 20:54. Отправлено: 20:41, 27-10-2013 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2008 R2 - Подключение сетевых дисков | Rulezzz2 | Windows Server 2008/2008 R2 | 7 | 21-03-2013 18:54 | |
Подключение сетевых дисков | dinamitbrein | Сетевые технологии | 6 | 05-07-2012 16:33 | |
Разное - Автоматическое подключение сетевых дисков | hoho | Microsoft Windows 2000/XP | 5 | 11-06-2012 09:08 | |
Любой язык - Подключение сетевых дисков | YDen | Скриптовые языки администрирования Windows | 12 | 01-03-2011 16:53 | |
Подключение сетевых дисков (маппинг) | ss777 | Microsoft Windows NT/2000/2003 | 1 | 25-08-2008 08:55 |
|