Разрешения vbscript GPO — запретить группе применять групповую политику

Предыстория (все эти факты высечены в камне и не могут быть изменены):

  • Параметр A должен применяться ко всем пользователям, КРОМЕ TestGroup.
  • Все пользователи находятся в одном OU
  • Нет группы (и я не могу ее создать), которая включает в себя «всех пользователей, КРОМЕ TestGroup».
  • Мне нужно сделать это с помощью vbscript
  • Использование сервера 2003

Поэтому, чтобы применить SettingA, мне нужно установить TestGPO (у которого есть SettingA) с разрешениями:

  • Аутентифицированные пользователи с правами на чтение и применение (разрешения по умолчанию)
  • TestGroup настроен на запрет «Применить групповую политику».

я просмотрел предоставленный Microsoft файл SetGPOPermissions.wsf (доступен здесь — https://gallery.technet.microsoft.com/group-policy-management-17a5f840), но это касается только базовых разрешений (обратите внимание, что разрешение PermGPORead, хотя оно и не имеет разрешения «Применить групповую политику», все пользователи находятся в Аутентифицированные пользователи», поэтому отсюда будут получены разрешения «Применить объект групповой политики», так что это не равнозначно отказу)

Я настроил сценарий здесь для своих целей (но сохранил те же имена переменных и т. д.), и он работает, как описано в сценарии, но я не могу понять, как заставить его работать с пользовательскими разрешениями. (https://books.google.co.uk/books?id=Ga1nLk_xqcUC&pg=PA430&dq=objGPOlist+item+1+getsecurityinfor&hl=en&sa=X&ved=0ahUKEwj67qq56-baAhUU3YMKHURTA1kQ6AEILTAA#v=onepage&q=objGPOlist%20item%201%20getsecurityinfor&f=false)

Когда дело доходит до следующей строки, я вижу, что могу изменить метод/свойство в конце с «PermGPOApply» на «PermGPOCustom», но я не могу найти примеры того, что я мог бы добавить сюда.

set objGPMPerm = 
objGPM.CreatePermissions(strGroupAdd,objGPMConstants.PermGPOApply, False)

После этой строки из скрипта:

setObjsecurityinfo = objGPOlist.item(1).GetSecurityInfo()

Я добавил следующее, адаптированное из DumpGPOInfo.wsf (https://gallery.technet.microsoft.com/group-policy-management-17a5f840):

For each GPOPermission in objSecurityInfo
    wscript.echo "GPO trustee is: " & GPOPermission.Trustee.Trusteename
    wscript.echo "GPO permission is: " & GPOPermission.Permission
Next

И из этого я вижу, что «Пользовательское» разрешение отображается как 65795. Однако это не определяет конкретное настраиваемое разрешение, а скорее любое разрешение, которое не попадает в скобки «чтение» или «редактирование» - поэтому «Чтение, выполнение». , Изменить и Запретить «Применить групповую политику» будет отображаться как 65795, как и просто Запретить «Применить групповую политику». Другими словами, это бесполезно для меня.

Я нашел заманчивую ссылку на то, как установить разрешения на следующем веб-сайте, но затем не смог найти более полезную информацию по этой ссылке.

«Чтобы установить запрещенные или настраиваемые разрешения для этих объектов, вам по-прежнему необходимо использовать интерфейсы служб Active Directory — ADSI — такие инструменты, как IADsSecurityDescriptor или Microsoft adssecurity.dll». (http://www.itprotoday.com/management-mobility/scripting-group-policy-permissions)

Итак, в заключение: пожалуйста, может кто-нибудь посоветовать, как использовать vbscript, чтобы настроить объект групповой политики, чтобы запретить «применить групповую политику» для указанной группы. Спасибо!


person Badger    schedule 02.05.2018    source источник


Ответы (1)


Не удалось найти способ использования COM-объекта GPMmgt.GPM, используемого в сценариях Microsoft, поэтому использовали DSA.exe для определения имени разрешений и DSACL для установки разрешений (поскольку объект групповой политики является или, конечно, объектом в AD) . Я устанавливаю разрешения на чтение, а затем запрещаю, и мне требуется отличительное имя (DN) объекта групповой политики.

objFSO = CreateObject("wscript.Shell")
strCMDLineRead = "dsacls " & chr(34) & strGPO_DN & chr(34) & " /I:T /G " & strGroupAdd & ":GR"
strCMDLineDeny = "dsacls " & chr(34) & strGPO_DN & chr(34) & " /I:T /D " & strGroupAdd & ":CA;" & chr(34) & "Apply Group Policy"  & chr(34)

objShell.Run strCMLDLineRead,0, TRUE
objShell.Run strCMLDLineDeny,0, TRUE

Не уверен в этикете ответа на мой собственный вопрос. Я не хотел просто закрывать его, так как кто-то может столкнуться с этим и найти его полезным.

person Badger    schedule 03.05.2018