我正在寻找一种通过组策略以编程方式将 MSI 部署到一组计算机(包含在 AD 中的单个 OU 内)的方法。
假设:
- 包含 MSI 的网络共享已创建并具有适当的权限
- 在执行代码之前,手动将 MSI 复制到共享中
- 包含目标计算机的 OU 已存在
有没有办法以编程方式创建 GPO 和相关的 GP 链接?
任何语言都可以。C#、Powershell、C++ 等
答案1
如果你希望以编程方式使用 GP 对象,那么你需要查看Microsoft 的 IGPMGPO 接口。
这里的问题是,您无法在 GPO 中创建新的策略设置,但您可以修改 GPO 本身(复制 GPO、启用/禁用设置组、设置 WMI 过滤器、修改 ACL 等)。因此,如果您创建一个将手动执行安装的 GPO,则可以使用此界面修改您的权限或过滤器以扩展目标。但据我所知,没有可用于修改 GPO 内设置的属性的界面。
此时,您进入了一个我不熟悉的编程领域,因此我无法提供任何我自己的示例。但链接会将您带到 MSDN 参考资料,我认为任何有信心说“任何语言都可以”的人可能都能够阅读文档并了解它。
但对于别人的作品,我发现MSDN Social 上的此内容(在 Google 搜索 IGPMGPO 时位于顶部附近)
编辑 :: 我刚刚有一位同事指出,GP 对象只是写入的文件的集合(文件夹)\\域\SYSVOL\域\策略\GUID并且,如果您愿意,您可以使用上面的界面填写该路径,然后将任何属性更改直接写入 GPO 底层存储。最后,您将返回上面的界面并切换设置(例如,计算机启用/禁用)以更新数据库中的版本标记,并使新设置从存储中读取并推送。我从来没有这样做过,他强调“可以,但我不会“ 方面。