none
Скрипт для добавления доменной группы в группу локальных администраторов RRS feed

  • Вопрос

  • В компании используется политика Restricted Groups на пользовательские компьютеры
    На первый взгляд все нормально.
    НО
    Есть контейнер в АД, на который политики компании не распространяются (ВИПЫ, ноутбуки)
    А административные привилегии на этих компьютерах по ряду причин нужны.
    Вижу единственный выход: написать скрипт, который будет добавлять группу АД в Администраторы и повесить на запуск при старте компов этого контейнера.
    В скриптописании не силен, поэтому полез на скрипт-центр - там нашел несколько скриптов с похожим кодом, но запустить их не смог
    Помогите неучу.

    16 сентября 2009 г. 5:32

Ответы

  • На мой скрипт.
    Он включает группу ITSupport (системотехники, которые не должны иметь прав админа в домене, но должны на локальных компах) в локальные админы

    '--------------------------------------------------------------------------
    ' NAME: itsa.vbs
    ' AUTHOR: Andrew Mishechkin
    ' COMMENT: скрипт добавления доменной группы ITSupport в Administrators
    '--------------------------------------------------------------------------
    
    On Error Resume Next				'Обработка ошибок включена 
    
    '--------------------------------------------------------------------------
    'Объявление переменных
    
    Dim LocalAdminsGroup			'объект локальная группа Administrators
    Dim AdminsGroupMember			'объект члена группы Administrators
    Dim DomainITSGroup				'объект доменная группа ITSupport 
    Dim DomainITSGroupPresent 			'переменная наличия ITSupport в группе Administrators
    Dim ErrorMessage				'переменная сообщения об ошибке				
    Dim ComputerSName							
    Dim WindowsVersion
    
    '--------------------------------------------------------------------------
    'Создание объектов
    
    Set LocalAdminsGroup = GetObject("WinNT://./Administrators,group") 		 'создание объекта группы Administrators
    If Err.Number <> 0 Then
    	Err.Clear
    	Set LocalAdminsGroup = GetObject("WinNT://./Администраторы,group")   'создание объекта группы Администраторы
    	If Err.Number <> 0 Then
    		ErrorMessage = "Groups objects creation error. Error code: " & Err.Number & " " & Err.Description
    		SendErrorMessage(ErrorMessage)
    		WScript.Quit
    	End If
    End If
    
    Set DomainITSGroup = GetObject("WinNT://DOMAIN/ITSupport,group")	 	 'создание объекта группы "ITSupport"
    If Err.Number <> 0 Then
    	ErrorMessage = "ITSupport object creation error. Error code: " & Err.Number & " " & Err.Description
    	SendErrorMessage(ErrorMessage)
    	WScript.Quit
    End If
    
    
    '--------------------------------------------------------------------------
    'Выполнение операций проверки и добавления
    
    DomainITSGroupPresent = False
    For Each AdminsGroupMember in LocalAdminsGroup.Members				'проверка членства ITSupport в Administrators
    	If AdminsGroupMember.Name = "ITSupport" Then
    		DomainITSGroupPresent = True								'ITSupport присутствует
    	End If
    Next 
    
    If DomainITSGroupPresent = False Then								'Если ITSupport отсутствует то
    	LocalAdminsGroup.Add(DomainITSGroup.ADsPath)					'добавление ее в Administrators
    End If
    
    If Err.Number <> 0 Then
    	ErrorMessage = "Error of addition ITSupport to Administrators. Error code:" & Err.Number & " " & Err.Description
    	SendErrorMessage(ErrorMessage)
    	WScript.Quit
    End If
    
    '---------------------------------------------------------------------------
    ' Функция отправки сообщения об ошибке
    
    Function SendErrorMessage(v)
    	
    	'Определение имени компьютера и версии ОС 
    	Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    	Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
    	For Each objItem in colItems
    		ComputerName = objItem.CSName
    		WindowsVersion = objItem.Version
    	Next
    
    	'Отправка сообщения
    	If WindowsVersion = "5.0.2195" Or WindowsVersion = "5.1.2600" Or WindowsVersion = "5.2.3790" Then
    		Set MailObject = CreateObject("CDO.Message")
    		MailObject.From = """ITSA Script""script@company.ru"
    		MailObject.To = "admin@company.ru" 
    		MailObject.Subject = ComputerName+" ITSA Script Error"
    		MailObject.Textbody = v   
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "com.local.polad.ru"
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    		MailObject.Configuration.Fields.Update
    		MailObject.Send
    	End If
    End Function

    Andrew Mishechkin
    16 сентября 2009 г. 5:54

Все ответы

  • Да хотя бы даже так:

    http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/a9b22cc6-293f-424b-a05a-66e980addd44
    .
    или так: http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/4e0d826d-9d74-4d61-93ff-284ca6825215 , при добавлении в пролитику сменить

    strComputer = "atl-ws-01" на strComputer = "."

    P.S. Следует учесть, что на рабочих станциях с русскоязычной ОС, локальная группа администраторов русскоязычная - "Администраторы"...


    Если ответ Вам помог, нажмите на изображение зеленой галочки - «пометить как ответ». Если ответ был для Вас полезен, Вы можете пометить это сообщение как «полезное», нажав на ссылку "проголосовать за полезное сообщение".
    16 сентября 2009 г. 5:40
  • Это батник или vbs?
    При запуске батника с таким кодом - вываливает командную строку и все (ничего не добавляет)
    При запуске vbs ругается на неправильный код (строка 1 символ 16 :))
    16 сентября 2009 г. 5:46
  • Есть контейнер в АД, на который политики компании не распространяются (ВИПЫ, ноутбуки)
    А административные привилегии на этих компьютерах по ряду причин нужны.
    Вижу единственный выход: написать скрипт, который будет добавлять группу АД в Администраторы и повесить на запуск при старте компов этого контейнера.

    IIUC, для того, чтобы добавить скрипт в автозагрузку, вы собираетесь использовать GP. Но, если вы будете использовать GP, то ни что не мешает вам создать политику (при помощи тех же самых Restricted Groups), которая будет добавлять доменные гуппы в группу лок. админов (такая возможность существует, начиная с win2k sp4). Никакой скрипт для этого не нужен.
    16 сентября 2009 г. 5:48
  • На мой скрипт.
    Он включает группу ITSupport (системотехники, которые не должны иметь прав админа в домене, но должны на локальных компах) в локальные админы

    '--------------------------------------------------------------------------
    ' NAME: itsa.vbs
    ' AUTHOR: Andrew Mishechkin
    ' COMMENT: скрипт добавления доменной группы ITSupport в Administrators
    '--------------------------------------------------------------------------
    
    On Error Resume Next				'Обработка ошибок включена 
    
    '--------------------------------------------------------------------------
    'Объявление переменных
    
    Dim LocalAdminsGroup			'объект локальная группа Administrators
    Dim AdminsGroupMember			'объект члена группы Administrators
    Dim DomainITSGroup				'объект доменная группа ITSupport 
    Dim DomainITSGroupPresent 			'переменная наличия ITSupport в группе Administrators
    Dim ErrorMessage				'переменная сообщения об ошибке				
    Dim ComputerSName							
    Dim WindowsVersion
    
    '--------------------------------------------------------------------------
    'Создание объектов
    
    Set LocalAdminsGroup = GetObject("WinNT://./Administrators,group") 		 'создание объекта группы Administrators
    If Err.Number <> 0 Then
    	Err.Clear
    	Set LocalAdminsGroup = GetObject("WinNT://./Администраторы,group")   'создание объекта группы Администраторы
    	If Err.Number <> 0 Then
    		ErrorMessage = "Groups objects creation error. Error code: " & Err.Number & " " & Err.Description
    		SendErrorMessage(ErrorMessage)
    		WScript.Quit
    	End If
    End If
    
    Set DomainITSGroup = GetObject("WinNT://DOMAIN/ITSupport,group")	 	 'создание объекта группы "ITSupport"
    If Err.Number <> 0 Then
    	ErrorMessage = "ITSupport object creation error. Error code: " & Err.Number & " " & Err.Description
    	SendErrorMessage(ErrorMessage)
    	WScript.Quit
    End If
    
    
    '--------------------------------------------------------------------------
    'Выполнение операций проверки и добавления
    
    DomainITSGroupPresent = False
    For Each AdminsGroupMember in LocalAdminsGroup.Members				'проверка членства ITSupport в Administrators
    	If AdminsGroupMember.Name = "ITSupport" Then
    		DomainITSGroupPresent = True								'ITSupport присутствует
    	End If
    Next 
    
    If DomainITSGroupPresent = False Then								'Если ITSupport отсутствует то
    	LocalAdminsGroup.Add(DomainITSGroup.ADsPath)					'добавление ее в Administrators
    End If
    
    If Err.Number <> 0 Then
    	ErrorMessage = "Error of addition ITSupport to Administrators. Error code:" & Err.Number & " " & Err.Description
    	SendErrorMessage(ErrorMessage)
    	WScript.Quit
    End If
    
    '---------------------------------------------------------------------------
    ' Функция отправки сообщения об ошибке
    
    Function SendErrorMessage(v)
    	
    	'Определение имени компьютера и версии ОС 
    	Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    	Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
    	For Each objItem in colItems
    		ComputerName = objItem.CSName
    		WindowsVersion = objItem.Version
    	Next
    
    	'Отправка сообщения
    	If WindowsVersion = "5.0.2195" Or WindowsVersion = "5.1.2600" Or WindowsVersion = "5.2.3790" Then
    		Set MailObject = CreateObject("CDO.Message")
    		MailObject.From = """ITSA Script""script@company.ru"
    		MailObject.To = "admin@company.ru" 
    		MailObject.Subject = ComputerName+" ITSA Script Error"
    		MailObject.Textbody = v   
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "com.local.polad.ru"
    		MailObject.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    		MailObject.Configuration.Fields.Update
    		MailObject.Send
    	End If
    End Function

    Andrew Mishechkin
    16 сентября 2009 г. 5:54
  • Это батник или vbs?
    При запуске батника с таким кодом - вываливает командную строку и все (ничего не добавляет)
    При запуске vbs ругается на неправильный код (строка 1 символ 16 :))

    первый вариант - cmd
    второй - vbs

    В случае русскоязычной группы администраторов 1 скрипт будет выглядеть так:

    chcp 1251
    net localgroup "Администраторы" /add "domain\user" , скрипт нужно добавлять в компьютерную часть политики....


    Если ответ Вам помог, нажмите на изображение зеленой галочки - «пометить как ответ». Если ответ был для Вас полезен, Вы можете пометить это сообщение как «полезное», нажав на ссылку "проголосовать за полезное сообщение".
    16 сентября 2009 г. 6:01
  • IIUC, для того, чтобы добавить скрипт в автозагрузку, вы собираетесь использовать GP. Но, если вы будете использовать GP, то ни что не мешает вам создать политику (при помощи тех же самых Restricted Groups), которая будет добавлять доменные гуппы в группу лок. админов (такая возможность существует, начиная с win2k sp4). Никакой скрипт для этого не нужен.

    Если использовать рестриктед групс, то пользователи вылетят из админов, что недопустимо
    16 сентября 2009 г. 6:11
  • Вот это работает, спасибо.
    Только на windows 7 не отработал
    16 сентября 2009 г. 6:12
  • IIUC, для того, чтобы добавить скрипт в автозагрузку, вы собираетесь использовать GP. Но, если вы будете использовать GP, то ни что не мешает вам создать политику (при помощи тех же самых Restricted Groups), которая будет добавлять доменные гуппы в группу лок. админов (такая возможность существует, начиная с win2k sp4). Никакой скрипт для этого не нужен.

    Если использовать рестриктед групс, то пользователи вылетят из админов, что недопустимо

    IMHO, Вы заблуждаетесь. http://support.microsoft.com/default.aspx/kb/810076
    • Предложено в качестве ответа Vasily GusevModerator 29 октября 2009 г. 17:23
    16 сентября 2009 г. 7:29
  • Вот это работает, спасибо.
    Только на windows 7 не отработал

    Если ты про мой скрипт, то только что запустил его под Windows 7 - все отработало.
    А что за ошибка ?
    Andrew Mishechkin
    17 сентября 2009 г. 6:04
  • Александр, технологии не стоят на месте, надо только держать руку на пульсе ))).
    В данном случае заморачиваться со скриптами - нет никакого смысла. У нас есть такой прекрасный механизм как Group Policy preferences.
    С его помощью можно решить данную задачу за три клика мыши используя Targeting.
    Для тек кто в танке, - есть доступный и наглядный материал по этому поводу TechDays: http://www.techdays.ru/videos/1066.html
    29 октября 2009 г. 16:53
  • Александр, технологии не стоят на месте, надо только держать руку на пульсе ))).
    В данном случае заморачиваться со скриптами - нет никакого смысла. У нас есть такой прекрасный механизм как Group Policy preferences.
    С его помощью можно решить данную задачу за три клика мыши используя Targeting.
    Для тек кто в танке, - есть доступный и наглядный материал по этому поводу TechDays: http://www.techdays.ru/videos/1066.html

    Посмотрел презенташку. Интересное начало от Василия Гусева: "...технология  почему то замалчивается компанией Microsoft".
    А почему ? Хотелось бы услышать комментарии от спецов MS по по поводу GP Prereferences. Замалчивание вообще не свойственно MS, а если молчат, то это наводит на нехорошие мысли по поводу этой технологии.

    PS: в одной презентации на Techdays автор рекомендовал каждый месяц делать оффлайную дефрагментацию AD......
    Andrew Mishechkin
    30 октября 2009 г. 10:38
  • Это устаревшее утверждение, потому что изначально GPP были приобретены компанией Microsoft и интергрированы как дополнение к Group Policy. В этот момент GPP не были широко известны. Потом GPP стали штатной фичей, и "реклама" пошла :-))

    Можете почитать у меня в блоге целую серию статей про GPP начиная отсюда Group Policy Preferences – копируем дерево подпапок
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    30 октября 2009 г. 11:37
    Модератор
  • IIUC, для того, чтобы добавить скрипт в автозагрузку, вы собираетесь использовать GP. Но, если вы будете использовать GP, то ни что не мешает вам создать политику (при помощи тех же самых Restricted Groups), которая будет добавлять доменные гуппы в группу лок. админов (такая возможность существует, начиная с win2k sp4). Никакой скрипт для этого не нужен.

    Если использовать рестриктед групс, то пользователи вылетят из админов, что недопустимо

    "Вы просто не умеете их готовить"
    В RG можно как задать членство группы (т.е. кто входит в Администраторы), т.к. и добавить кого то в группы (т.е. кто-то добавляется в Администраторы).
    Посмотрите на политику повнимательнее, всё там есть.
    MSBF
    5 ноября 2009 г. 10:29