未应用 GPO
GPO not being applied
我正在使用 powershell GroupPolicy 模块来创建和 link 新的 GPO。我有大量 GPO 要创建,因此我希望自动化该过程而无需与组策略编辑器交互。
我在通过编辑器创建 GPO 时注意到,每个策略对象都将包含在一个或多个 XML 文件或 .INI 文件中。
如上所述,我开始使用 New-GPO 命令创建 GPO,并传递 -Name 和 -Domain 标志。成功创建 GPO 后,我将(通过我的脚本)生成一个 XML 文件,其中包含该策略将使用的所有信息。下面显示的是 XML 文件的摘录,我将创建该文件以设置映射驱动器策略。
在编辑器中检查策略时,一切正常。显示正确的驱动器并且所有设置似乎都是正确的。但是,该策略从未应用过。如果我通过组策略编辑器手动创建相同的策略,所有策略都会开始工作,包括我使用 powershell 创建的策略。
因此,错误似乎是域控制器从未意识到更改,但在进行手动更改时会应用这些更改。
我试过 运行 gpupdate /force,它似乎不会更新或传播更改
New-Item \$($MappedDrivesGPO.DomainName)\SYSVOL$($MappedDrivesGPO.DomainName)\Policies$("{"+$MappedDrivesGPO.Id+"}")\User\Preferences\Drives\Drives.xml -ItemType File -Force
Set-Content \$($MappedDrivesGPO.DomainName)\SYSVOL$($MappedDrivesGPO.DomainName)\Policies$("{"+$MappedDrivesGPO.Id+"}")\User\Preferences\Drives\Drives.xml $xml
<?xml version="1.0" encoding="utf-8"?>
<Drives clsid="{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}">
<Drive clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}" name="P:" status="P:" image="2" changed="2019-04-26 10:41:54" uid="{$guid1}" bypassErrors="1">
<Properties action="U" thisDrive="NOCHANGE" allDrives="NOCHANGE" userName="" path="\fs1\Projects" label="Projects" persistent="0" useLetter="1" letter="P"/>
<Filters>
<FilterGroup bool="AND" not="0" name="$($domainName)\Drive P Access" sid="$($filterGroupSidDriveP)" userContext="1" primaryGroup="0" localGroup="0"/>
</Filters>
</Drive>
<Drive clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}" name="S:" status="S:" image="2" changed="2019-04-26 10:39:21" uid="{$guid2}" bypassErrors="1">
<Properties action="U" thisDrive="NOCHANGE" allDrives="NOCHANGE" userName="" path="\as1\Software" label="Software" persistent="0" useLetter="1" letter="S"/>
<Filters>
<FilterGroup bool="AND" not="0" name="$($domainName)\Drive S Access" sid="$($filterGroupSidDriveS)" userContext="1" primaryGroup="0" localGroup="0"/>
</Filters>
</Drive>
</Drives>
我希望政策在创建 XML 文件后按预期开始工作
实际结果是该政策似乎形成良好,但从未应用
我自己设法解决了这个问题,在这里发帖以防其他人遇到同样的问题。如果您以编程方式而不是通过编辑器创建 GPO,则必须扩展 script/program 以将 CSE(在本例中用于驱动器映射)和 SnapIn GUID 添加到 gPCUserExtensionNames。
[{00000000-0000-0000-0000-000000000000}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}][{5794DAFD-BE60-433F-88A2-1A31939AC01F}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}]
0000.. 是核心 GPO 引擎,23EA.. 是首选项工具 CSE GUID 驱动器,5794.. 是首选项 CSE GUID 驱动器。
如果您使用所需的更改手动创建策略,则可以打开 dsa.msc,启用高级功能,然后查看策略对象属性。在 gPCUserExtensionNames 下,您将能够看到包含您需要合并到软件中的 GUID 的数组。
我正在使用 powershell GroupPolicy 模块来创建和 link 新的 GPO。我有大量 GPO 要创建,因此我希望自动化该过程而无需与组策略编辑器交互。
我在通过编辑器创建 GPO 时注意到,每个策略对象都将包含在一个或多个 XML 文件或 .INI 文件中。
如上所述,我开始使用 New-GPO 命令创建 GPO,并传递 -Name 和 -Domain 标志。成功创建 GPO 后,我将(通过我的脚本)生成一个 XML 文件,其中包含该策略将使用的所有信息。下面显示的是 XML 文件的摘录,我将创建该文件以设置映射驱动器策略。
在编辑器中检查策略时,一切正常。显示正确的驱动器并且所有设置似乎都是正确的。但是,该策略从未应用过。如果我通过组策略编辑器手动创建相同的策略,所有策略都会开始工作,包括我使用 powershell 创建的策略。
因此,错误似乎是域控制器从未意识到更改,但在进行手动更改时会应用这些更改。
我试过 运行 gpupdate /force,它似乎不会更新或传播更改
New-Item \$($MappedDrivesGPO.DomainName)\SYSVOL$($MappedDrivesGPO.DomainName)\Policies$("{"+$MappedDrivesGPO.Id+"}")\User\Preferences\Drives\Drives.xml -ItemType File -Force
Set-Content \$($MappedDrivesGPO.DomainName)\SYSVOL$($MappedDrivesGPO.DomainName)\Policies$("{"+$MappedDrivesGPO.Id+"}")\User\Preferences\Drives\Drives.xml $xml
<?xml version="1.0" encoding="utf-8"?>
<Drives clsid="{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}">
<Drive clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}" name="P:" status="P:" image="2" changed="2019-04-26 10:41:54" uid="{$guid1}" bypassErrors="1">
<Properties action="U" thisDrive="NOCHANGE" allDrives="NOCHANGE" userName="" path="\fs1\Projects" label="Projects" persistent="0" useLetter="1" letter="P"/>
<Filters>
<FilterGroup bool="AND" not="0" name="$($domainName)\Drive P Access" sid="$($filterGroupSidDriveP)" userContext="1" primaryGroup="0" localGroup="0"/>
</Filters>
</Drive>
<Drive clsid="{935D1B74-9CB8-4e3c-9914-7DD559B7A417}" name="S:" status="S:" image="2" changed="2019-04-26 10:39:21" uid="{$guid2}" bypassErrors="1">
<Properties action="U" thisDrive="NOCHANGE" allDrives="NOCHANGE" userName="" path="\as1\Software" label="Software" persistent="0" useLetter="1" letter="S"/>
<Filters>
<FilterGroup bool="AND" not="0" name="$($domainName)\Drive S Access" sid="$($filterGroupSidDriveS)" userContext="1" primaryGroup="0" localGroup="0"/>
</Filters>
</Drive>
</Drives>
我希望政策在创建 XML 文件后按预期开始工作
实际结果是该政策似乎形成良好,但从未应用
我自己设法解决了这个问题,在这里发帖以防其他人遇到同样的问题。如果您以编程方式而不是通过编辑器创建 GPO,则必须扩展 script/program 以将 CSE(在本例中用于驱动器映射)和 SnapIn GUID 添加到 gPCUserExtensionNames。
[{00000000-0000-0000-0000-000000000000}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}][{5794DAFD-BE60-433F-88A2-1A31939AC01F}{2EA1A81B-48E5-45E9-8BB7-A6E3AC170006}]
0000.. 是核心 GPO 引擎,23EA.. 是首选项工具 CSE GUID 驱动器,5794.. 是首选项 CSE GUID 驱动器。
如果您使用所需的更改手动创建策略,则可以打开 dsa.msc,启用高级功能,然后查看策略对象属性。在 gPCUserExtensionNames 下,您将能够看到包含您需要合并到软件中的 GUID 的数组。