GPO не применяется

Я использую модуль PowerShell GroupPolicy для создания и связывания новых объектов групповой политики. Мне нужно создать большое количество объектов групповой политики, и поэтому я хочу автоматизировать процесс, не взаимодействуя с редактором групповой политики.

При создании объектов групповой политики в редакторе я заметил, что каждый объект политики будет содержаться либо в одном, либо в нескольких файлах XML или файлах .INI.

Отметив выше, я начал создавать объекты групповой политики с помощью команды New-GPO, передавая флаги -Name и -Domain. После того, как объект групповой политики будет успешно создан, я (с помощью своего сценария) сгенерирую 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-файла.

Фактический результат заключается в том, что политика кажется хорошо сформированной, но никогда не применялась.


person Atyrian    schedule 21.05.2019    source источник


Ответы (1)


Мне удалось решить эту проблему самостоятельно, опубликовав здесь, если кто-то еще столкнется с той же проблемой. Если вы создаете объекты групповой политики программно, а не через редактор, вам придется расширить свой сценарий/программу, чтобы добавить 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 — это диски GUID CSE Preference Tool, 5794.. — это Preference Tool CSE GUID Drives.

Если вы создаете политику вручную с нужными изменениями, вы можете затем открыть dsa.msc, включить дополнительные функции, а затем просмотреть свойства объекта политики. В разделе gPCUserExtensionNames вы сможете увидеть массивы, содержащие идентификаторы GUID, которые необходимо включить в ваше программное обеспечение.

person Atyrian    schedule 27.05.2019