День добрый, столкнулся с проблемой: имеется домен Samba пользователи хранятся в OpenLDAP. Собрал скрипт для авто- подключения дисков и принтеров, приблизительно следующего содержания: Option Explicit 'On Error Resume Next
Dim WshShell, WshNetwork Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj Const FileSrv1 = "\\192.168.1.10" Set WshShell = WScript.CreateObject("WScript.Shell") Set WshNetwork = WScript.CreateObject("WScript.Network") Set objSysInfo = CreateObject("ADSystemInfo") strUserDN = objSysInfo.userName Set UserObj = GetObject("LDAP://" & strUserDN) For Each GroupObj In UserObj.Groups UserGroups=UserGroups & "[" & GroupObj.Name & "]" Next 'MsgBox "Member of "& UserGroups if InGroup("Purchase") then MapDrv "X:", FileSrv1 & "\Public","Общий" MapDrv "O:", FileSrv1 & "\Purchase","Отдел закупок" end if if InGroup("sales") then MapDrv "X:", FileSrv1 & "\Public","Общий" MapDrv "O:", FileSrv1 & "\Sales","Отдел продаж" End If wshNetwork.AddWindowsPrinterConnection "\\192.168.1.1\MAN" Function MapDrv(DrvLet, UNCPath, DrvName) Dim objFSO, oShell ' Object variable Dim Msg Set objFSO = CreateObject("Scripting.FileSystemObject") Set oShell = CreateObject("Shell.Application") On Error Resume Next If objFSO.DriveExists(DrvLet) Then WshNetwork.RemoveNetworkDrive DrvLet, true, true End If WshNetwork.MapNetworkDrive DrvLet, UNCPath oShell.NameSpace(DrvLet).Self.Name = DrvName Select Case Err.Number Case 0 ' No error Case -2147023694 WshNetwork.RemoveNetworkDrive DrvLet, true, true WshNetwork.MapNetworkDrive DrvLet, UNCPath oShell.NameSpace(DrvLet).Self.Name = DrvName Case -2147024811 WshNetwork.RemoveNetworkDrive DrvLet, true, true WshNetwork.MapNetworkDrive DrvLet, UNCPath oShell.NameSpace(DrvLet).Self.Name = DrvName 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, FileSrv1 End Select End Function Function InGroup(strGroup) InGroup=False If InStr(UserGroups,"[CN=" & strGroup & "]") Then InGroup=True End If End Function Столкнулся с проблемой, когда происходит выполнение скрипта выдается ошибка "Именам пользователей не сопоставлены коды защиты данных." Как я понял это не сопопставлены группы Все и Опытные пользователи...только не понял как их сопоставить. Может есть предложения? Спасибо -- С уважением, Руслан Чекушко ICQ: 327335295 ЗЫ: Если убрать в скрипте блок: strUserDN = objSysInfo.userName Set UserObj = GetObject("LDAP://" & strUserDN) For Each GroupObj In UserObj.Groups UserGroups=UserGroups & "[" & GroupObj.Name & "]" Next 'MsgBox "Member of "& UserGroups и прописывать подключение сетевых дисков как: MapDrv "X:", FileSrv1 & "\Public","Общий" и т.д. то все работает, но задача стоит чтобы диски подключались по группам пользователей (точно скрипт работал в домене win2k3, проверено!) -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru