我已通过 GPO 应用登录脚本来运行 BGInfo。据我了解,由于我正在设置用户配置,因此必须将 GPO 应用于用户 OU。我们有一个名为 SERVERS 的 OU,这是我们想要运行此 GPO 的唯一 OU,但是当我将 GPO 链接到 SERVERS OU 而不是 USERS OU 时,GPO 未应用。由于 GPO 因此链接到 USERS OU,因此它会在我们公司的每台 PC/SERVER 上运行 - 这不是我们想要的。
如果到目前为止我的结论是正确的,我推测阻止 GPO 在除 SERVERS 之外的任何 OU 上运行的唯一方法是通过 WMI 过滤器,但是我似乎无法创建一个可以工作的过滤器,因为我无法访问 %computername% 之类的变量。
我原本以为我想要一个如下查询:
gwmi -namespace root\directory\LDAP -query "select * from ds_computer where DS_cn = %computername% AND ds_distinguishedName like '%ou=servers%'"
这相当于说“SELECT * FROM ds_Computer where DS_cn = [当前登录的计算机] AND ds_distinguishedName like '%ou=servers%'”
但这当然不会评价。
我这样做对吗?或者有更好的解决方案吗?
非常感谢您的任何建议。
非常感谢dotdev
答案1
您需要环回处理。它以登录用户的身份运行分配给计算机 GPO 的“用户配置”项。因此,分配给服务器 OU 的 GPO(其中包含用户的配置项)将在用户登录时运行。
微软有更好的解释Windows Server:了解“用户组策略环回处理模式”
答案2
避免环回处理;这是一个故障排除过程恶梦有时几年后又会反过来伤害你。请改用组策略首选项 (GPP) 项目级别定位。基本流程如下:
- 创建新的 GPO
- 浏览至用户配置 | 首选项 | 控制面板设置 | 计划任务
- 创建一个新的计划任务(至少 Windows 7)
- 配置您的任务以运行脚本或直接启动脚本
- 在触发器选项卡上,创建一个触发器来启动“登录时”
- 作为奖励,你可以通过设置“重复任务间隔”选项定期让 bginfo“更新”
- 在“常用”选项卡上,选中“项目级定位”并打开“定位”对话框
- 选择新项目 | 组织单位
- 浏览并选择要应用 GPP 的 OU
- 将 GPO 链接到用户对象所在的位置