背景(这些事实都是一成不变的,不能改变):
-
SettingA将应用于除TestGroup之外的所有用户
-
所有用户都在同一个OU中
-
没有组(我不能创建一个)包含"all users EXCEPT TestGroup"
-
我需要使用vbscript来做到这一点
-
使用Server 2003
因此,要应用SettingA,我需要设置具有权限的TestGPO(具有SettingA):
-
具有读取和应用的经过身份验证的用户(默认权限)
-
TestGroup设置为拒绝"Apply Group Policy" .
我查看了Microsoft提供的SetGPOPermissions.wsf(此处可用 - https://gallery.technet.microsoft.com/group-policy-management-17a5f840),但这仅涵盖了基本权限(请注意,PermGPORead权限虽然没有"Apply Group Policy"权限,但所有用户都在"Authenticated Users"中,因此将获得应用GPO权限在这里,所以这并不等于拒绝)
我已经在这里为我的目的定制了脚本(但保留了相同的var名称等),并且它可以像脚本描述的那样工作,但我无法弄清楚如何使用自定义权限 . (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,就像拒绝“应用组策略”一样 . 换句话说,它对我没用 .
我确实找到了如何在以下网站上设置权限的诱人参考,但后来无法从此链接中找到更多有用的信息 .
"To set Deny or Custom permissions on these objects, you still need to use Active Directory Service Interfaces—ADSI—tools such as IADsSecurityDescriptor or Microsoft's adssecurity.dll."(http://www.itprotoday.com/management-mobility/scripting-group-policy-permissions)
总结一下:请有人建议如何使用vbscript设置GPO以拒绝指定组的“应用组策略” . 谢谢!
1 回答
无法找到使用Microsoft脚本中使用的GPMmgt.GPM COM对象的方法,因此使用DSA.exe计算权限名称和DSACL以设置权限(因为GPO是,或者当然是AD中的对象) . 我设置了读取权限,然后拒绝,我需要GPO的专有名称(DN) .
不确定回答我自己的问题的礼仪 . 我不想只是关闭它,因为有人可能会遇到这个并发现它很有用 .