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-файла.

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
287
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, которые необходимо включить в ваше программное обеспечение.

Другие вопросы по теме