kusaika
24-10-2013, 15:04
Приветик всем!
помогите плиз с небольшим глюком по скрипту с которым столкнулся.
Если быть совсем точным то происходит следующее сам скрипт вроде работает норм но глюк состоит в том что он нормально отрабатывает у тех пользователей домена которые являются только пользователями домена, у любых других пользователей которые имеют более расширенные права например администраторы или администраторы домена данный скрипт не работает ((
Однако если же запускать вручную то все норм !
Тело скрипта прилагаю ниже )
Скрипт подключает сетевые диски на основе принадлежности конкретного пользователя какой либо группе.
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
помогите плиз с небольшим глюком по скрипту с которым столкнулся.
Если быть совсем точным то происходит следующее сам скрипт вроде работает норм но глюк состоит в том что он нормально отрабатывает у тех пользователей домена которые являются только пользователями домена, у любых других пользователей которые имеют более расширенные права например администраторы или администраторы домена данный скрипт не работает ((
Однако если же запускать вручную то все норм !
Тело скрипта прилагаю ниже )
Скрипт подключает сетевые диски на основе принадлежности конкретного пользователя какой либо группе.
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