We rise up for the things we believe in over and over again

It is done!
Последнее, что мне никак в моей опупее по автоматизации развертывания принтеров не давалось, так это подстановка новых принтеров в групповую политику. Среди всех команд Powershell, работающих с GPO, нет ни одного, который бы позволял менять GPPreferences. Точнее, есть, но работают они несколько не с тем, что нужно.
А недавно стукнуло в голову - описания принтеров, которые раскатываются на рабочие места, это ни что иное, как XML файл, лежащий в SYSVOL по вполне себе известному пути. А что если выправить непосредственно этот XML файл, а потом посмотреть, что будет.

Как водится, разъяснения, что тут и как.
В качестве входных параметров в этом коде присутствуют имя принтера, который будет прописывать в политику, имя принтсервера, на котором живет общий ресурс этого принтера, и имя политики, которую будем менять. Все остальное вычисляется автоматом на основании этих данных. В финальном виде входными данными будет только имя принтера, но это уже за рамками данной записи.
Скрипт предполагает, что группа, членам которой будет подключаться этот принтер, уже создана, а ее имя совпадает с именем принтера. При желании проверка на наличие этой группы в AD прописывается очень просто.
Отдельно пара слов о блоке Raise Version of policy. Номер версии групповой политики никак не влияет на репликацию самих файлов политики, а вот для клиентских рабочих станций он может иметь большое значение. Именно поэтому данный блок и введен. Как рассчитывается и как хранится номер версии - в сети материала полно, от себя лишь скажу, что это было весьма интересно.
P.S. Согласен, что сборка XML структуры в виде текста - решение "в лоб". Но как показывает практика, иногда именно такие решения работают надежнее всего.

@музыка: Stellardrone - Comet Halley

@темы: PowerShell, Scripting

Комментарии
12.10.2016 в 16:08

Тотальная неудачница и убийца жёстких дисков.
P.S. Согласен, что сборка XML структуры в виде текста - решение "в лоб". Но как показывает практика, иногда именно такие решения работают надежнее всего.

Я всёже советую изучить библиотеку MSXML и делать всё через неё. Ибо достаточно одного незаметного незаэкранированного символа, и твоя система развалится.

Хотя, конечно, запись ручками XML – это меньшее зло по сравнению с чтением XML ручками.
12.10.2016 в 17:27

We rise up for the things we believe in over and over again
изучить библиотеку MSXML
Когда-нибудь - обязательно :)
12.10.2016 в 23:16

Тотальная неудачница и убийца жёстких дисков.
Just do it.
13.10.2016 в 01:01

We rise up for the things we believe in over and over again
Sir, yes, sir! %)
14.10.2016 в 13:01

Тотальная неудачница и убийца жёстких дисков.
^^'