Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

IliaKot



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 
 
'************************************************************  
'                             Объявление переменных  
'************************************************************  
 
Dim WshShell, WshNetwork,Level,dic  
Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj  
Dim line  
set dic = createobject("Scripting.Dictionary")  
'************************************************************  
'                              Внутренние функции  
'************************************************************  
On Error Resume Next  
 
Function MapDrv(DrvLet, UNCPath)  
    Dim WshNetwork  
    Dim Msg  
    On Error Resume Next  
    Set WshNetwork = WScript.CreateObject("WScript.Network")  
    WshNetwork.RemoveNetworkDrive DrvLet  
    WshNetwork.MapNetworkDrive DrvLet, UNCPath  
    Select Case Err.Number  
        Case 0  
        Case -2147023694  
            WshNetwork.RemoveNetworkDrive DrvLet  
            WshNetwork.MapNetworkDrive DrvLet, UNCPath  
        Case -2147024811  
            WshNetwork.RemoveNetworkDrive DrvLet  
            WshNetwork.MapNetworkDrive DrvLet, UNCPath  
    End Select  
End Function  
'*****************************************************************  
'                                      Словарь  
'*****************************************************************  
 
function dictionary  
set dic = createobject("Scripting.Dictionary")  
Level=0  
Set objSysInfo = CreateObject("ADSystemInfo")  
Set objUser = GetObject ("LDAP://" & objSysInfo.UserName)  
arrMembersOf = objUser.GetEx("memberof")  
if Err.Number = 0 then GroupBelong(arrMembersOf)  
end function  
'*****************************************************************  
'                                      Рекурсия  
'*****************************************************************  
function GroupBelong(arrMembers)  
    On Error Resume Next  
    For each Group in arrMembers  
        Set objGroup = GetObject ("LDAP://" & Group)  
        objGroup.GetInfo  
        dic.add lcase(objGroup.Get("cn")),lcase(objGroup.Get("cn"))  
        arrMembersSub = objGroup.Getex("memberof")  
        if Err.Number = 0 then GroupBelong(arrMembersSub)  
        Err.Number = 0  
    Next  
    Level=Level+1  
    if Level=50 then  
        WScript.echo "Достигнут максимальный уровень вложенности"  
        exit function  
    end if  
End function  
'***************************************************************  
'    Получение Primary Group пользователя  
'***************************************************************  
 
'WScript.Echo "Current User Name: " & CurrentUserName()  
'WScript.Echo "Current User ADsPath: " & ADsPathUser(CurrentUserName())  
'WScript.Echo "Primary Group:"  
'WScript.Echo GetPrimaryGroup(ADsPathUser(CurrentUserName()))  
 
' Возвращает "SAMAccountName" текущего пользователя  
Function CurrentUserName()  
Set WshNetwork = WScript.CreateObject("WScript.Network")  
CurrentUserName = WshNetwork.UserName  
Set WshNetwork = Nothing  
End Function  
' Возвращает "ADsPath" по "SAMAccountName" пользователя  
Function ADsPathUser(UserName)  
Set RootDSE = GetObject("LDAP://RootDSE")  
Set Connection = CreateObject("ADODB.Connection")  
Connection.Provider = "ADSDSOObject"  
Connection.Open "ADs Provider"  
Set Command = CreateObject("ADODB.Command")  
Set Command.ActiveConnection = Connection  
CommandString = "<" & "LDAP://" & RootDSE.Get("defaultNamingContext") & ">" & ";" & "(&(objectCategory=Person)(objectClass=User)(SAMAccountName=" & UserName & "))" & ";" & "ADsPath" & ";" & "Subtree"  
Command.CommandText = CommandString  
Command.Properties("Page Size") = 1000  
Command.Properties("Size Limit") = 1  
Command.Properties("Timeout") = 30  
Set RecordSet = Command.Execute  
ADsPathUser = RecordSet.Fields("ADsPath").Value  
RecordSet.Close  
Connection.Close  
Set RecordSet = Nothing  
Set Command = Nothing  
Set Connection = Nothing  
Set RootDSE = Nothing  
End Function  
' Возвращает "primaryGroupID" по "ADsPath"  
Function IADsprimaryGroupID(ADsPath)  
Set Object = GetObject(ADsPath)  
IADsprimaryGroupID = Object.primaryGroupID  
End Function  
' Возвращает имя "Primary Group" по "ADsPath"  
Function GetPrimaryGroup(ADsPath)  
Set RootDSE = GetObject("LDAP://RootDSE")  
Set Connection = CreateObject("ADODB.Connection")  
Connection.Provider = "ADSDSOObject"  
Connection.Open "ADs Provider"  
Set Command = CreateObject("ADODB.Command")  
Set Command.ActiveConnection = Connection  
CommandString = "<" & "LDAP://" & RootDSE.Get("defaultNamingContext") & ">" & ";" & "(objectCategory=Group);distinguishedName,primaryGroupToken;subtree"  
Command.CommandText = CommandString  
'Command.Properties("Page Size") = 1000  
'Command.Properties("Size Limit") = 1  
'Command.Properties("Timeout") = 30  
Set RecordSet = Command.Execute  
If Err.Number <> 0 Then  
WSCript.Echo "При поиске Primary Group произошла ошибка: " & Err.Description & "[" & Err.Number & "]"  
End If  
While Not Recordset.EOF  
If Recordset.Fields("primaryGroupToken").Value = IADsprimaryGroupID(ADsPath) Then  
GetPrimaryGroup = Recordset.Fields("distinguishedName").Value  
End If  
Recordset.MoveNext  
Wend  
RecordSet.Close  
Connection.Close  
Set RecordSet = Nothing  
Set Command = Nothing  
Set Connection = Nothing  
Set RootDSE = Nothing  
End Function  
 
'************************************************************  
'    Процедуры вызываемая из wsf файла.  
'************************************************************  
 
function mpd(grp,share,letter)  
    if lcase(grp)="everyone" then mapdrv letter,share  
    if dic.count=0 then dictionary  
        if dic.item(lcase(grp))=lcase(grp) then  
            mapdrv letter,share              
            exit function  
        end if  
End function  
 
function mpd_user(user,share,letter)  
    Set WshNetwork = WScript.CreateObject("WScript.Network")  
    if lcase(user)=lcase(WshNetwork.UserName) then  
        mapdrv letter,share  
        exit function  
    end if  
end function  
'*************************************************************  
'                            Конец скрипта  
'*************************************************************  
 
'*************************************************************  
'                     Блок который заполняют  
'                  "Администраторы" на местах  
'*************************************************************  
<job>  
    <script language = "VBScript" SRC= "logon.vbs"/>  
    <script language = "vbscript">  
'*************************************************************  
'    Скрипт подключения сетевых дисков пользователю на основе  
'               принадлежности пользователя к группам  
'      
'    Необходимо корректно заполнить строку вызова внешней процедуры:  
'    mpd "_наименование группы в AD_","_Путь к шаре(ресурсу)_","_Буква диска_"  
'    Наименование группы, путь к шаре и буква диска пишутся в кавычках через запятую, скобки не нужны  
'    Наименование группы пишется так же как оно записано в AD без учёта регистра.  
'  
'    Примеры:  
'        mpd "domain users","\\server\netlogon","z:" - Правильное написание будет работать  
'        mpd "Domain Users","\\server\netlogon","z:" - Правильное написание будет работать  
'        mpd ("Domain Users","\\server\netlogon","z:") - Не будет работать  
'        mpd "domain users","\\server\function\","x:" - Не будет работать  
'        mpd "domain users","\\server\refbook","w:\" - Не будет работать  
'  
'  
'*************************************************************  
    mpd "domain admins","\\server\install","q:"  
     
'*************************************************************  
    </script>  
</job>

Всего записей: 2 | Зарегистр. 22-02-2006 | Отправлено: 15:54 22-02-2006 | Исправлено: IliaKot, 16:05 22-02-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования
emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru