День  добрый, столкнулся с проблемой: имеется домен 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

Дати відповідь електронним листом