[已解决]:以编程方式创建 GPO 时,策略的 LDAP 条目中的 gPCMachineExtensionNames 属性未设置。我们在脚本中放入了一些代码,将密钥导出到 txt 文件,然后在客户端站点重新导入它,之后一切都很顺利。
我创建了一个脚本来创建我们在新客户入职期间使用的 GPO。不幸的是,GPO 的处理方式,一些设置保存在 XML 文件中。我现在正在努力处理的 XML 文件是用于服务设置的。不幸的是,由于 NTService 行中的 UID,此文件不可移植。我相信这等于此服务设置为在其下运行的用户帐户的 UID(在本例中为 NetworkService)。
我只想将脚本和包含 XML 文件的目录快速移至客户端 DC 并执行该脚本(这将更改 UID,以使 XML 文件有效)。该脚本将创建 GPO、将注册表设置插入 GPO、查找 GPO GUID、根据找到的 GPO GUID 将 XML 文件从目录复制到 GPO 目录。
\DomainController\SYSVOL\domain.local\Policies{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\Machine\Preferences\Services
到目前为止,除了查找和替换 UID 位之外,所有方法都有效。不幸的是,该位阻止它将服务设置应用于客户端的计算机。
<?xml version="1.0" encoding="utf-8"?>
<NTServices clsid="{2CFB484A-4E96-4b5d-A0B6-093D2F91E6AE}"><NTService clsid="{AB6F0B67-341F-4e51-92F9-005FBFBA1A43}" name="WinRM" image="2" changed="2018-06-13 20:23:16" uid="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"><Properties startupType="AUTOMATIC" serviceName="WinRM" serviceAction="START" timeout="30"/>`</NTService>
</NTServices>
我已经做了几天了,因此非常感激任何帮助。
答案1
不幸的是,由于 NTService 行中的 UID,此文件不可移植。我相信这相当于此服务设置为在其下运行的用户帐户的 UID(在本例中为 NetworkService)。
根据XML 规范对于组策略首选项,该uid
值与你配置服务以作为其运行的用户无关。从链接来看,它是:
创建首选项元素时生成的唯一 GUID,用于唯一标识用于跟踪和报告的首选项。
作为演示,尝试通过 GPMC 创建一个包含两个不同服务首选项条目的新 GPO,这两个条目均以 NETWORK SERVICE 身份运行。然后检查生成的 XML。uid 值将完全不同。记录当前值以供以后参考。
修改 GPO 并将帐户切换为 LOCAL SERVICE。然后注意两个值都已更改并且仍然不同。现在再次修改 GPO 并将其设置回 NETWORK SERVICE。这些值将再次更改并且与您记录的原始值不同。
不幸的是,我认为uid
值不是问题的根源,除非您不小心在任何地方复制了值。如果它们应该是唯一的,这可能会把事情搞砸。
顺便说一句,我敢发誓有更优雅的方式以编程方式创建可能问题更少的 GPO......可能是通过 GPMC 附带的库。