none
удаление пользователей из локальной группы администраторов с помощью политик RRS feed

  • Вопрос

  • доброго всем дня! -)
    оговорюсь сразу опыта в примении политик в домене мягко говоря мало.
    Что имеем:
    сеть с DC. win 2003 st.ed. sp2 на локальных машинах XP SP3.
    на локальных машинах многие пользователи домена входят в группу локальных администраторов.
    что сделал, через групповые политики в Restricted Group добавил, кто может быть в локальных админах и существующих доменных пользователей перевел в обычные пользователи. Политики пременяются, всё работает. но ведь когда не применяется политика всё возвращается на свои места как было. Как сделать так чтобы, результат применения политики оставался, даже когда политика не применяется или отключена.
    То есть это как прийти и ручками удалить пользователя из локальных админов, и перевести его в группу Users?
    14 декабря 2009 г. 5:30

Ответы

  • On Error Resume Next
    strComputer = "."
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/администраторы,group")
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/administrators,group")
       Set a = GroupAdm.members()
       For Each b In a
         c = b.Name
         c = CStr(c)
        Select Case c
        Case "Администраторы такие-то"
        Case "Администраторы сякие-то"
        Case "Domain Admins"
        Case "Администратор"
        Case "Administrator"
        Case "my_user"
        Case Else
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/пользователи,group")
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/users,group")
    GroupPUsers.Add ("WinNT://" & "domain" & "/" & c)
    Wscript.sleep 100
    GroupAdm.Remove ("WinNT://" & "domain" & "/" & c)
        End Select
         
       Next

    Этот startup скрипт оставляет в администраторах - перечисленные учетки, остальных перемещает в группу пользователи. Вместо "domain" нужно подставить netbios имя своего домена.
    • Помечено в качестве ответа nico1a 16 декабря 2009 г. 7:39
    14 декабря 2009 г. 7:59
    Отвечающий

Все ответы

  • Полагаю, сделать это можно startup скриптом

    14 декабря 2009 г. 5:57
    Отвечающий
  • поясните вашу задачу...

    я понимаю что у вас есть политики которые применяются время от времени...?

    или вы хотите зачищать группы на недоменных ПК?

    blog.wadmin.ru
    14 декабря 2009 г. 6:49
  • Если Вы хотите однократного повлиять на членство в локальной группе компьютера средствами групповых политик, то можете воспользоваться возможностями "Group Policy Preferences": "Control Panel Settings: Local Users and Groups" с параметром "Apply once".

    http://technet.microsoft.com/en-us/library/dd367850(WS.10).aspx

    14 декабря 2009 г. 7:32
    Отвечающий
  • On Error Resume Next
    strComputer = "."
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/администраторы,group")
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/administrators,group")
       Set a = GroupAdm.members()
       For Each b In a
         c = b.Name
         c = CStr(c)
        Select Case c
        Case "Администраторы такие-то"
        Case "Администраторы сякие-то"
        Case "Domain Admins"
        Case "Администратор"
        Case "Administrator"
        Case "my_user"
        Case Else
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/пользователи,group")
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/users,group")
    GroupPUsers.Add ("WinNT://" & "domain" & "/" & c)
    Wscript.sleep 100
    GroupAdm.Remove ("WinNT://" & "domain" & "/" & c)
        End Select
         
       Next

    Этот startup скрипт оставляет в администраторах - перечисленные учетки, остальных перемещает в группу пользователи. Вместо "domain" нужно подставить netbios имя своего домена.
    • Помечено в качестве ответа nico1a 16 декабря 2009 г. 7:39
    14 декабря 2009 г. 7:59
    Отвечающий
  • попробывал со скриптом  от Ivan Bardeen в спешке только, не получилось. вечером попробую покапаться наверное упустил чего...

    14 декабря 2009 г. 11:30
  • Сохранил скрипт от Ivan Bardeen с расширением .vbs , добавил в политики -  Computer Configurations - Windows Settings - Scripts - Startup,
    политика вроде отрабатывается, а результата ноль, блин разжуйте для "особо адаренных", пожалуйста.
    15 декабря 2009 г. 6:47
  • Сохранил скрипт от Ivan Bardeen с расширением .vbs , 
    Это правильно, забыл уточнить.
    А если его запустить от имени администратора - тогда отрабатывает?
    15 декабря 2009 г. 6:53
    Отвечающий

  • А если его запустить от имени администратора - тогда отрабатывает?

    тож нет. может имя домена не так написал, хотя по разному пробывал... в данный момент написано ("WinNT://" & "мой_домен" & "/" & c) 
    15 декабря 2009 г. 7:59
  • После оператора "Case" нужно писать имя пользователя без имени домена. Т.е если пользователь domain\user нужно писать user.

    15 декабря 2009 г. 8:06
    Отвечающий
  • После оператора "Case" нужно писать имя пользователя без имени домена. Т.е если пользователь domain\user нужно писать user.


    было domain\user исправил. но к сожелению ничего. можно как нить поэтапно разобрать где неотрабатывается скрипт?
    15 декабря 2009 г. 8:30
  • Вы лучше запостите свой скрипт.

    15 декабря 2009 г. 8:50
    Отвечающий
  • On Error Resume Next
    strComputer = "."
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/администраторы,group")
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/administrators,group")
       Set a = GroupAdm.members()
       For Each b In a
         c = b.Name
         c = CStr(c)
        Select Case c
        Case "Администратор"
        Case "Administrator"
        Case Else
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/пользователи,group")
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/users,group")
    GroupPUsers.Add ("WinNT://" & "DOMAIN" & "/" & c)
    Wscript.sleep 100
    GroupAdm.Remove ("WinNT://" & "DOMAIN" & "/" & c)
        End Select
         
       Next
    15 декабря 2009 г. 8:53
  • Результат проверки у вас должен быть таким: напихайте в группу администраторы различных учеток. Затем запустите скрипт. После выполнения скрипта у вас в группе "администраторы" должна остаться только встроенная учетка "администратор" или "administrator" (в зависимости от языковой версии ОС) . Остальные учетки будут перемещены в группу "пользователи" или "users" соответственно.
    Если у вас встроенная учетка администратора переименована - то соответственно после оператора case переименуйте ее также
    15 декабря 2009 г. 9:08
    Отвечающий
  • что сделал, через групповые политики в Restricted Group добавил, кто может быть в локальных админах и существующих доменных пользователей перевел в обычные пользователи. Политики пременяются, всё работает. но ведь когда не применяется политика всё возвращается на свои места как было. Как сделать так чтобы, результат применения политики оставался, даже когда политика не применяется или отключена.
    То есть это как прийти и ручками удалить пользователя из локальных админов, и перевести его в группу Users?

    Каким образом "все возвращается на свои места как было"?  Если Restricted Group сработала, удалила из локальной группы администраторов всех и добавила тех, кого вы указали, то именно эти последние останутся в группе, даже если политику убрать, но восстановить исходный состав группы политика не сможет, т.к. не знает этот исходный состав.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    15 декабря 2009 г. 10:36
    Модератор

  • Каким образом "все возвращается на свои места как было"? 

    Применил политику к конкретной машине. применилась. в группе администраторов локальных, к примеру остались администратор локальный и администратор доменный. в группу пользователей (Users) тоже добавились пользователи которые были указаны в политики и соответсвенно удалились те которые были до применения политики. когда убираешь политику и перезагружаешь компьютер в группах администраторов и пользователей возвращаются то что было до применения политики.
    15 декабря 2009 г. 11:14
  • получилось,  хотя не совсем. что сделал; заново скопировал код скрипта от Ivan Bardeen в блокнот, сменил расширение на .vbs произвольно назвал вот код :
    On Error Resume Next
    strComputer = "."
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/рфьшэшёЄЁрЄюЁ√,group")
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/administrators,group")
       Set a = GroupAdm.members()
       For Each b In a
         c = b.Name
         c = CStr(c)
        Select Case c
        Case "└фьшэшёЄЁрЄюЁ"
        Case "Administrator"
        Case Else
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/яюы№чютрЄхыш,group")
    Set GroupPUsers = GetObject("WinNT://" & StrComputer & "/users,group")
    GroupPUsers.Add ("WinNT://" & "domain" & "/" & c)
    Wscript.sleep 100
    GroupAdm.Remove ("WinNT://" & "domain" & "/" & c)
        End Select
         
       Next


    там ничего не изменилось, может дело в кодировке?..незнаю.
    Но вот только переносяться доменные пользователи, а пользователи созданные локально на машине остаются. а как их тоже перенести из администраторов в обычные пользователи?

    16 декабря 2009 г. 3:46
  • Но вот только переносяться доменные пользователи, а пользователи созданные локально на машине остаются.
    Да, локальных пользователей скрипт не переносит. Локальных пользователей предлагаю отключить. Предварительно создав для людей доменные учетки и перенеся профили. Так сказать, повысить энтропию вашей системы : )
    16 декабря 2009 г. 5:59
    Отвечающий
  • локальные пользователи не используются. при много благодарен Вам -) Ivan Bardeen, за скрипт и пояснения к нему. -)
    16 декабря 2009 г. 7:39
  • Присоединяюсь к благодарностям к Ivan Bardeen. Позволил себе смелость отредактировать скрипт. Теперь он вообще не зависит от локализации, удаляет и локальных пользователей тоже. Вырезал перенос в группу пользователей.

    On Error Resume Next
    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colAccounts = objWMIService.ExecQuery ("Select * From Win32_Group Where LocalAccount = TRUE And SID = 'S-1-5-32-544'")
    
    For Each objAccount in colAccounts
        AdmGrName = objAccount.Name
    Next
    
    Set GroupAdm = GetObject("WinNT://" & StrComputer & "/" & AdmGrName & ",group")
    Set a = GroupAdm.members()
    For Each b In a
        c = b.Name
        c = CStr(c)
        Select Case c                                                                  
                    Case "Domain Admins"
                    Case "Администратор"
                    Case "Administrator"
                    Case Else
                                    GroupAdm.Remove b.ADsPath
        End Select
    Next
    
    • Предложено в качестве ответа Vladimir Bestuzhev 13 апреля 2010 г. 10:19
    13 апреля 2010 г. 10:16