Предыстория (все эти факты высечены в камне и не могут быть изменены):
Поэтому, чтобы применить SettingA, мне нужно установить TestGPO (у которого есть SettingA) с разрешениями:
Я просмотрел предоставленный Microsoft SetGPOPermissions.wsf (доступен здесь - https://gallery.technet.microsoft.com/group-policy-management-17a5f840), но он охватывает только базовые разрешения (обратите внимание, что разрешение PermGPORead, хотя оно не имеет разрешения «Применить групповую политику», все пользователи находятся в разделе «Прошедшие проверку», поэтому отсюда получит разрешения Применить GPO, так что это не означает отрицать)
Я настроил здесь сценарий для своих целей (но сохранил те же имена переменных и т. д.), И он работает так, как описывает сценарий, но я не могу понять, как заставить его работать с настраиваемыми разрешениями. (https://books.google.co.uk/books?id=Ga1nLk_xqcUC&pg=PA430&dq=objGPOlist+item+1+getsecurityinfor&hl=en&sa=X&ved=0ahUKEwj67qq56-baAhUU3YMKHURTA1&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=ru&hl=en)
Когда дело доходит до следующей строки, я вижу, что могу изменить метод / свойство в конце с «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, как и просто «Запретить» «Применить групповую политику». Другими словами, мне это ни к чему.
Я нашел соблазнительную ссылку на то, как установить разрешения на следующем веб-сайте, но потом не смог найти больше полезной информации по этой ссылке.
«Чтобы установить разрешения Deny или Custom для этих объектов, вам все равно нужно использовать интерфейсы служб Active Directory - ADSI - инструменты, такие как IADsSecurityDescriptor или Microsoft adssecurity.dll». (http://www.itprotoday.com/management-mobility/scripting-group-policy-permissions)
Итак, в итоге: Пожалуйста, может кто-нибудь посоветовать, как использовать vbscript для установки GPO, чтобы запретить «Применить групповую политику» для указанной группы. Спасибо!
Не удалось найти способ использовать COM-объект GPMmgt.GPM, используемый в сценариях Microsoft, поэтому использовал DSA.exe для определения имени разрешений и DSACL для установки разрешений (поскольку GPO является или, конечно, объектом в 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
Не уверен в этикете отвечать на свой вопрос. Я не хотел просто закрывать его, так как кто-то может натолкнуться на это и сочтет это полезным.