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

  • Вопрос

  •  

    нужно удаленно проверить всех клиентов в АД на наличие определеных групп в группе локальных администраторов.

    Особенно интересуют естественно те, у которых эти группы удалены.

     

    можно ли как-то скриптом получить список группы локальных администраторов на клиенте, где доменные группы удалены, но сам клиент входит в домен?

    13 ноября 2007 г. 16:13

Ответы

  • А почему никто не хочет использовать для контроля содержимого локальных групп политику Restricted Groups?
    http://support.microsoft.com/kb/279301
    http://www.windowsecurity.com/articles/Using-Restricted-Groups.html

    А если нужны именно отчеты по членству в группах (хотя особого смысла при применении Restricted Groups в этом нет) то можно вызывать net localgroup Administrators > \\server\reports$\%computername%.txt из сценария запуска.
    Кстати есть еще и ключи /add и /delete если скучно :)


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    23 июля 2009 г. 18:09
    Модератор

Все ответы

  • Есть.
    Вот подсказка:

    strComputer = "atl-fs-01"

    Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")

    For Each objUser In objGroup.Members
    If InStr(objUser.ADsPath, "WinNT://GER/ad_") Then
    objGroup.Remove(objUser.AdsPath)
    End If
    Next

    13 ноября 2007 г. 18:32
    Модератор
  • а подробнее можно?

    плохо понимаю что этот срипт делает :-)

    натравил его на комп который не в домене, скрипт отработал и сказал completed

     

    чисто теоретически не понимаю как можно узнать состав групп у компа если ты не входишь в группу администраторов

    14 ноября 2007 г. 2:47
  • Не самый красивый вариант, но должен сработать. Привязать данный cmd на стартап на компьютеры или пользователей. Также создать общий ресурс для отчетов с разрешением на запись для пользователей или компьютеров из-под которых будет запускаться cmd.

    @echo off
    set Report=\\server\report\report.txt
    echo [%computername%] Member of Administrators>>%Report%
    net localgroup Администраторы>>%Report%
    echo --->>%Report%

    14 ноября 2007 г. 6:48
  • тот скрипт, что я написал удаляет специфические объекты из группы администраторов на компьютере Alt-FS-01.

    Вот скрипт, который выводит всех членов локальной группы администраторов текущего компьютера на экран:

     

    Образец кода

    strComputer = "."

    Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")

    For Each objUser In objGroup.Members
    wscript.Echo objUser.Name
    Next

     

     

     

    Вам нужно дописать его так, чтобы он это выводил в файл, откуда Вы его забрать можете. После чего запихнуть в GPO lдлякомпьютеров, на которых нужно проверить в раздел Computer Configuration - Windows Settings - Scripts (startup/shutdown). Естественно, файл, который Вы будете писать должен быть доступен учетной записи компьютера. Могут быть также грабли с русским названием групп, но это фигня, просто надо проверить и русские и английские.

    Так же можно воспользоваться и тем файлом, который предложил предыдущий оратор.

    14 ноября 2007 г. 7:09
    Модератор
  •  

    я написал "скриптик" который со стороны контроллера коннектится на клиента и получает список его группы локальных администраторов.

     

    но есть парочку но.

     

    1. на некоторых машинах скрипт зависает получении объекта

    Set objAdmGroup = GetObject("WinNT://" & DNScompName & "/Administrators")

    сам клиент при этом доступен (пингуется и менеджементом в группу админов можно зайти)

     

    вопрос 1. в чем может быть дело?
    вопрос 2. как установить таймаут на этой строке. что бы если в течении времени Х не удалось получить объект скрипт шел дальше?

     

    2. как добраться до локальных пользователей клиента?

    GetObject("WinNT://" & DNScompName & "/Пользователи") дает группу "Локальные пользователи и группы/Группы/Пользователи", а нужен список локальных пользователей "Локальные пользователи и группы/Пользователи"

    20 ноября 2007 г. 11:13
  • Получить всех пользователей:

     

    Образец кода

    On Error Resume Next

    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20

    arrComputers = Array(".")
    For Each strComputer In arrComputers
       WScript.Echo
       WScript.Echo "=========================================="
       WScript.Echo "Computer: " & strComputer
       WScript.Echo "=========================================="

       Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
       Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", "WQL", _
                                              wbemFlagReturnImmediately + wbemFlagForwardOnly)

       For Each objItem In colItems
          WScript.Echo "AccountType: " & objItem.AccountType
          WScript.Echo "Caption: " & objItem.Caption
          WScript.Echo "Description: " & objItem.Description
          WScript.Echo "Disabled: " & objItem.Disabled
          WScript.Echo "Domain: " & objItem.Domain
          WScript.Echo "FullName: " & objItem.FullName
          WScript.Echo "LocalAccount: " & objItem.LocalAccount
          WScript.Echo "Lockout: " & objItem.Lockout
          WScript.Echo "Name: " & objItem.Name
          WScript.Echo "PasswordChangeable: " & objItem.PasswordChangeable
          WScript.Echo "PasswordExpires: " & objItem.PasswordExpires
          WScript.Echo "PasswordRequired: " & objItem.PasswordRequired
          WScript.Echo "SID: " & objItem.SID
          WScript.Echo "SIDType: " & objItem.SIDType
          WScript.Echo "Status: " & objItem.Status
          WScript.Echo
       Next
    Next

     

     

     

    20 ноября 2007 г. 13:14
    Модератор
  • Может ещё пообсуждаем, а то путано как-то?
    Я решаю похожую задачу. На рабочих станциях домена список локальных групп "Администраторы" очень "замусорен". В нём много и пользователей (доменных и локальных), и групп (доменных). Кроме того на некоторых компьютерах встроенная учётная запись администратора переименована в sa, adm, admin и т. п. Задача состоит в том, чтобы на каждой рабочей станции привести группу "Администраторы" в порядок. Необходимо оставить в ней только встроенную учётную запись администратора и две доменные группы (русский сервер Windows 2003) "Администраторы домена" и "Workstation Admins".
    Я знаю только один способ определить встроенную учётную запись локального админа: у неё SID заканчивается на 500. Но я умею определять SID только у объекта WMI, вот так:

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set objAccount = objWMIService.Get("Win32_UserAccount.Name='" & strUsername & "',Domain='" & strComputer & "'")
    getSID = objAccount.SID

    А список членов группы умею получить только через ADSI, вот так:

    Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")

    Получается не очень красиво. Никто не знает более простого способа решить задачу?

    Ну и к вопросу о восстановлении ststus quo для группы Domain Admins. Я давно пользуюсь таким скриптом:

        Dim GroupComputer
        Dim Group

        On Error Resume Next
        ' Bind to the computer that contains the group.
        Set GroupComputer = GetObject("WinNT://.,computer")
       
        ' Bind to the group object.
        Set Group = GroupComputer.GetObject("group", "Administrators")
       
        ' Add the user to the group.
        Call Group.Add ("WinNT://DOMAINNAME/Domain Admins")

    Скрипт включен в групповой политике домена в качестве logon script.


    MCP
    23 июля 2009 г. 9:05
  • А почему никто не хочет использовать для контроля содержимого локальных групп политику Restricted Groups?
    http://support.microsoft.com/kb/279301
    http://www.windowsecurity.com/articles/Using-Restricted-Groups.html

    А если нужны именно отчеты по членству в группах (хотя особого смысла при применении Restricted Groups в этом нет) то можно вызывать net localgroup Administrators > \\server\reports$\%computername%.txt из сценария запуска.
    Кстати есть еще и ключи /add и /delete если скучно :)


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    23 июля 2009 г. 18:09
    Модератор
  • Спасибо!!!!!!!!!!!!!!!!!!!!!! А то я так бы и ковырялся со скриптами.


    MCP
    23 июля 2009 г. 19:15