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

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

Ответить
Настройки темы
VBS/WSH/JS - Подключение сетевых дисков на основе принадлежности пользователя группе

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


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

Профиль | Отправить 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
Благодарности: 2

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


ну если скрипт работает у всех , кроме администраторов, может дело не в скрипте, а в настройках безопасности ?

Посмотрите настройки безопасности политики , или же gpresult из-под "пользователя который имеет более расширенные права" запустите

Отправлено: 15:32, 24-10-2013 | #2



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

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


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


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

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


Да вроде снова все перепроверил нету ошибок в отработке GPда и с безопасностью все норм ) , а вот gpresult говорит что скрипт есть загружается но результат таков у пользователя одного и того же сетевые диски могут подключится или нет в зависимости какие права есть у учетной записи если только "Пользователь домена" до диски подключаются, "Пользователь домена" и "Администратор домена " то уже нет ( , хотя при этом данный пользователь находится по умолчанию в одной и той-же группе по которой происходит проверка принадлежности того или иного пользователя к группе которые указанны в скрипте.

Честно ломаю голову уже 2 недели и не могу понять в чем загвоздка )))

Отправлено: 16:49, 24-10-2013 | #3


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


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

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


Дайте что ли вывод команды gpresult

Через мастер моделирования групповой политики ваш случай смотрели ?

Отправлено: 17:05, 25-10-2013 | #4


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


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

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


Ещё как вариант ...
Может где-то есть loopback policy ?
Вы сами строили всю инфраструктуру или разбираетесь с уже существующей ?

Отправлено: 18:28, 25-10-2013 | #5


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


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

Профиль | Отправить 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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход