【发布时间】:2018-10-12 11:45:27
【问题描述】:
背景(这些事实都是一成不变的,无法改变):
- SettingA 将应用于除 TestGroup 之外的所有用户
- 所有用户都在同一个 OU 中
- 没有包含“除 TestGroup 之外的所有用户”的组(我无法创建)
- 我需要使用 vbscript 执行此操作
- 使用 Server 2003
因此,要应用 SettingA,我需要为 TestGPO(具有 SettingA)设置权限:
- 经过身份验证的用户具有读取和应用权限(默认权限)
- TestGroup 设置为拒绝“应用组策略”。
我查看了 Microsoft 提供的 SetGPOPermissions.wsf(可在此处获得 - https://gallery.technet.microsoft.com/group-policy-management-17a5f840),但这仅涵盖基本权限(请注意,PermGPORead 权限,虽然它没有“应用组策略”权限,但所有用户都在"Authenticated Users" 所以会从这里获得 Apply 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,就像拒绝“应用组策略”一样。换句话说,它对我没有用。
我确实在以下网站上找到了有关如何设置权限的诱人参考,但随后无法从此链接中找到更多有用的信息。
“要对这些对象设置拒绝或自定义权限,您仍然需要使用 Active Directory 服务接口 - ADSI - 工具,例如 IADsSecurityDescriptor 或 Microsoft 的 adssecurity.dll。” (http://www.itprotoday.com/management-mobility/scripting-group-policy-permissions)
总之: 请有人建议如何使用 vbscript 设置 GPO 以拒绝指定组的“应用组策略”。谢谢!
【问题讨论】:
标签: vbscript permissions gpo