alecsandrb
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Option Explicit Dim WshNetwork, objSysInfo, strComputerDN, objComputer, strUserDN, objUser Dim myArray, Path, rec, DepartmentPath, OUCompPath, DescriptionStr Dim objWMIService, colSoftware, WshShell, StrCmds, RetVal On Error Resume Next 'Определяем имя компьютера Set objSysInfo = CreateObject("ADSystemInfo") strComputerDN = objSysInfo.computerName Set objComputer = GetObject("LDAP://" & strComputerDN) 'Определяем имя пользователя Set WshNetwork = CreateObject("WScript.Network") strUserDN = objSysInfo.userName Set objUser = GetObject("LDAP://" & strUserDN) ' Получаем информацию об OU пользователя ' общая информация включая полный перечень всех OU ' в общем случаем для меня это: cn=Ivan Ivanov,OU=IT,OU=USERS,OU=KOR,OU=CEM,DC=RR,DC=TT,DC=NNNNNN,DC=MMM myArray = Split(strUserDN, ",") Path = "" For Each rec In myArray If Left(rec, 3) = "OU=" Then Path = Mid(rec, 4) + Path End If Next ' В примере Path="CEMKORUSERSIT" DepartmentPath = Mid(Path, 12) ' Результат DepartmentPath="IT" ' Получаем информацию об OU компьютера ' У меня разнесены учетки ПК, ноутбуков и серверов по разным OU ' и у меня у ПК для примера будет: cn=PCVASYA,OU=Workstation,OU=KOR,OU=CEM,DC=RR,DC=TT,DC=NNNNNN,DC=MMM myArray = Split(strComputerDN, ",") Path = "" For Each rec In myArray If Left(rec, 3) = "OU=" Then Path = Mid(rec, 4) + Path End If Next ' В примере Path="CEMKORWorkstation" OUCompPath = Mid(Path, 7) ' Результат OUCompPath="Workstation" ' Полное описание будет следующего вида: ' Workstation IT Ivanov Ivan Last Logon 1 июня 8:00:00 DescriptionStr = OUCompPath & " " & DepartmentPath & " " & objUser.sn & " " & objUser.givenName &" Last logon - "& Now ' запись полученной строки в описание компьютера в AD objComputer.Put "Description" , DescriptionStr objComputer.SetInfo ' Далее эту строку запишем в описание ПК на самом компьютере ' Останавливаем службу Сервер и зависящие от нее служюы Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set colServiceList = objWMIService.ExecQuery("Associators of " & "{Win32_Service.Name='LANMANSERVER'} Where " & "AssocClass=Win32_DependentService " & "Role=Antecedent" ) For Each objService in colServiceList objService.StopService() Next Wscript.Sleep 20000 Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where Name='LANMANSERVER'") For Each objService in colServiceList errReturn = objService.StopService() Next ' Внесение данных о пользователе в свойcтва компьютера Set WshShell = Wscript.CreateObject("WScript.Shell") Set WshNetwork = CreateObject("WScript.Network") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\srvcomment", DescriptionStr ' Запускаем службу Сервер и зависящие от нее служюы Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where Name='LANMANSERVER'") For each objService in colServiceList errReturn = objService.StartService() Next Wscript.Sleep 20000 Set colServiceList = objWMIService.ExecQuery("Associators of " & "{Win32_Service.Name='LANMANSERVER'} Where " & "AssocClass=Win32_DependentService " & "Role=Dependent" ) For each objService in colServiceList objService.StartService() Next |