пятница, 11 декабря 2015 г.

Групповые политики и локальные группы (на примере группы локальных администраторов)

Итак, всем известно, что можно переназначать членство в группе локальных администраторов, но не все знают, что механизмов назначения членов группы локальных администраторов два.
Первый - через группы с ограниченным доступом. Конфигурация компьютера - Политики - Конфигурация Windows - Параметры безопасности - Группы с ограниченным доступом. Механизм позволяет четко определить членов группы и этот список не будет изменяться до момента следующего обновления групповой политки (обычно - около 2 часов).
Второй способ - через локальных пользователей и групп. Конфигурация компьютера - Настройка - Панель управления - Локальные пользователи и группы. Механизм позволяет изменять членство в группе, но при этом не переписывая полностью список (точнее - и это тоже можно, но флажок по-умолчанию снят).

Пример:
Допустим, есть политика, в которой через группы с ограниченным доступом указано, что членами группы локальных администраторов будет группа Support.
Тогда после применения групповой политики членами группы будет только группа Support и больше никто. Только локальный админ не будет выпилен.

Если делать по второму способу - то в члены группы (если не устанавливать флажок - очищать содержимое группы) будет добавлена группа Support. Все уже бывшие в ней члены останутся на месте.

В принципе, в одной политике можно комбинировать эти два механизма, только Группы с ограниченным доступом имеют больший приоритет, ну либо второй способ не применяется при наличии первого. Можете на досуге проверить.

Ну и немного скрипта, как сбегать по домену и выпилить одного пользователя из локальных админов и запилить другого:
[code]
On Error Resume Next
Set objDomain=Getobject("WinNT://DOMAIN")
For Each domainobject In objDomain
If Lcase(domainobject.Class)="computer" Then
Wscript.Echo domainobject.Name
Err.Clear
Set objPC=Getobject("WinNT://" & domainobject.Name)
'Wscript.Echo Err.Number
If Err.Number=0 Then
Wscript.Echo "connected"
For Each object In objPC
If lcase(object.class)="group" Then
If lcase(object.Name)="администраторы" or lcase(object.Name)="administrators" Then
Wscript.Echo "Group " & object.Name
Err.Clear
object.Add "WinNT://DOMAIN/Support"
object.Remove "WinNT://DOMAIN/UserName"
object.Remove "WinNT://DOMAIN/GroupName1"
If Err.Number=0 Then Wscript.Echo "All done"
End if
End If
Next
Else
Wscript.Echo "no connection"
End If
End If
Next
[/code]

Скрипт можно доработать напильником, чтобы перед соединением с компьютером проверялась его доступность, например с помощью WMI_Ping.

Комментариев нет:

Отправить комментарий