Совет недели (2014-03-1): «За милых дам» или маленькое поздравление с 8 марта средствами Windows PowerShell и GPO

Что бы сейчас ни происходило в мире, но праздник для прекраснейшей половины человечества никто не отменял. Кто придумывает, как можно интереснее «отомстить» за подаренную пенку для бритья на 23-е февраля, кто бежит в цветочные магазины за огромнейшими букетами, кто ходит по бутикам, выбирая подарки своим дамам, но самое главное, что мужчины при деле и заняты подготовкой. А можно ли сделать какой-то небольшой подарок, который наши милые дамы смогут лицезреть на своем компьютере после входа в систему? Конечно, можно! Об этом и пойдет речь в этом небольшом совете недели.

Что же можно сделать?

О каком же именно «презентике» будет идти речь в этом совете недели? Все очень просто: сейчас мы с вами попробуем выбрать из доменных служб Active Directory всех присутствующих женщин, а затем поместим им на рабочий стол какую-то восьмимартовскую обоину. Мелочи, а, как говорится, приятно. Итак, на какие этапы можно разбить данную задачу?

Этапы выполнения:

  1. Находим женщин;
  2. Помещаем их в новую группу безопасности;
  3. Копируем картинку на их компьютеры;
  4. Устанавливаем фоновый рисунок;
  5. Выбираем область действия объекта групповой политики;
  6. Тестируем.

1. Поиск всех женщин в организации при помощи PowerShell и LDAP

Для начала, исключительно в качестве теста, я создал учетные записи пользователей со всеми женскими именами, которые удалось вспомнить (вышло 80 имен). Такие учетные записи обладают только именами (вместо фамилий я указал цифры), именем входа, а также паролями. То есть не была указана какая-либо дополнительная информация о пользователе, эти учетные записи не были добавлены к соответствующим группам безопасности, иначе говоря, с такими учетками были выполнены простейшие действия. Исключительно в качестве примера привожу имена добавленных мною учетных записей (если кого забыл, извиняйте):

Мария, Ирина, Ольга, Елена, Светлана, Оксана, Алена, Марина, Анастасия, Александра, Анна, Алла, Жанна, Евгения, Алина, Анжела, Валентина, Валерия, Вера, Галина, Гера, Диана, Дана, Дарья, Дина, Наталья, Ева, Зинаида, Зоя, Карина, Кира, Людмила, Любовь, Лариса, Лидия, Яна, Надежда, Нина, Полина, Руслана, Снежана, Татьяна, Тамара, Тина, Таисия, Ульяна, Фаина, Фелиция, Кристина, Элла, Юлия, Алевтина, Антонина, Арина, Варвара, Виктория, Владлена, Дарина, Зарина, Виталия, Илона, Ксения, Каролина, Клара, Лада, Радмила, Сабина, Тамила, Эвелина, Анита, Элеонора, Анфиса, Василиса, Маргарита, Виолетта, Ада, Инга, Инесса, Марта, Аэлита

Глядя на все эти имена можно сразу прийти к выводу, что все женские имена (по крайней мере, все более-менее часто используемые имена) обладают всего лишь двенадцатью окончаниями, а именно: -ра, -на, -ла, -ия, -ья, -ва, -да, -оя, -са, -вь, -та а также –га. Насколько я знаю, то с этими окончаниями не связаны мужские имена (кроме Ильи), а это означает, что можно очень быстро локализовать всех женщин в компании.

Для этого нужно вспомнить, при помощи какого LDAP-запроса можно будет найти всех пользователей с соответствующим окончаниями имен. Запрос будет очень простой: (givenName=*на). Теперь, чтобы найти всех пользователей с указанными выше окончаниями имен, следует воспользоваться возможностями Windows PowerShell. Как вы знаете, за отображение объектов Active Directory отвечает командлет Get-ADObject. Следовательно, команда получится следующая:

Get-ADObject -LDAPFilter:"(|(givenName=*на)(givenName=*ра)(givenName=*ла)(givenName=*ия)(givenName=*ья)(givenName=*ва)(givenName=*да)(givenName=*оя)(givenName=*са)(givenName=*вь)(givenName=*та) (givenName=*га))

А на вывод ее содержимого вы можете посмотреть на следующей иллюстрации:

Рис. 1. Поиск всех женщин компании

2. Добавление женщин в соответствующую группу безопасности

Теперь, так как мы можем найти всех женщин, мы еще и можем их добавить в специально созданную глобальную группу безопасности. Так и сделаем.

Для этого сперва создадим саму группу. Сделаем это также при использовании Windows PowerShell. Командлет будет выглядеть следующим образом:

New-ADGroup -Name "Женщины компании" -Path "ou=Группы,dc=biopharmaceutic,dc=local" -GroupScope Global -GroupCategory Security

Группа создана. Теперь нужно всех найденных в предыдущем разделе этой статьи женщин сделать членами этой группы. Для этого список найденных пользователей будет экспортирован в CSV-файл, а после для всех пользователей из этого файла будет выполнено добавление в группу безопасности. Следовательно, нужно будет воспользоваться следующими командами:

Get-ADObject -LDAPFilter:"(|(givenName=*на)(|(givenName=*ра)(|(givenName=*ла)(|(givenName=*ия)(|(givenName=*ья)(|(givenName=*ва)(|(givenName=*да)(|(givenName=*оя)(|(givenName=*са)(|(givenName=*вь)(|(givenName=*га))” | Export-CSV “C:\Script\women.csv” –Encoding Unicode

Import-CSV "C:\Scripts\women.csv" –Encoding Unicode | % {Add-ADGroupMember -Identity “Женщины компании” -Members $_.DistinguishedName}

Результат выполнения команды отображен ниже:

Рис. 2. Добавление пользователей в группу безопасности

Желательно проверить, правильно ли были выполнены указанные выше команды. Для этого можно открыть либо оснастку «Active Directory – Пользователи и компьютеры» (Active Directory Users and Computers), либо «Центр администрирование Active Directory» (Active Directory Administrative Center) и проверить всех участников группы. Само собой, если в эту группу по какой-то причине попали мужчины, вы можете либо «подчистить» их членство из оснастки, либо заранее предусмотреть все возможные варианты при использовании команды Get-ADObject.

Часть членов созданной только что группы можно увидеть на соответствующей иллюстрации:

Рис. 3. Членство созданной женской группы

3. Копирование изображения на локальные компьютеры

Так как изначально на целевых компьютерах прекрасной половины человечества еще нет требуемого изображения, его непременно нужно скопировать. Можно выполнить следующее:

  1. Создайте в оснастке «Управление групповой политикой» (Group Policy Management) новый объект групповой политики, например, «8 March», свяжите его со всем доменом либо с подразделением, в которое однозначно будут входить все целевые учетные записи пользователей, а затем откройте для такого объекта редактор GPME;
  2. В отобразившейся оснастке следует перейти к узлу Конфигурация пользователя\Настройка\Конфигурация Windows\Файлы (User Configuration\PreferenceWindows Setting\Files) и из контекстного меню выбрать команду по созданию элемента предпочтения. В диалоговом окне создаваемого элемента предпочтения следует в качестве выполняемого действия выбрать команду «Создать» (Create), а в текстовых полях «Исходные файлы» и «Конечный файл» (Source file(s) и Destination file, соответственно) нужно будет указать путь к исходному файлу (например, \\dc\Shares\Images\8March.jpg) и путь к файлу, который будет использоваться при установке фонового изображения (например, такой путь будет иметь вид C:\Images\8March.jpg). Остальные параметры в данном случае нас не очень интересуют, поэтому можно все оставить в таком виде, как изображено ниже, и сохранять внесенные изменения:

    Рис. 4. Создаваемый элемент предпочтения

4. Установка фонового рисунка

Пользователей мы уже знаем, требуемый файл уже скопирован – половина дела сделана. На этом этапе, как понятно из подзаголовка, мы будем указывать картинку, которая очень скоро станет фоновым изображением. Естественно, это можно реализовать при помощи групповой политики, а так как оснастка редактора управления групповыми политиками еще не закрывалась, можно сразу перейти к узлу Конфигурация пользователя\Политики\Административные шаблоны\Рабочий стол\Рабочий стол (User Configuration\Policies\Administrative Template\Desktop\Desktop) и выбрать параметр «Фоновые рисунки рабочего стола» (Desktop Wallpaper). Действия, выполняемые в диалоговом окне свойств этого параметра политики, очень просты: вы устанавливаете переключатель на опции «Включено» (Enabled), в текстовом поле «Имя фонового рисунка» (Wallpaper Name) указываете путь к картинке (в нашем случае это будет C:\Images\8March.jpg), а из раскрывающегося списка «Стиль фонового рисунка» (Wallpaper Style) выбираете опцию «Заполнение» (Fill). На заполненное диалоговое окно свойств данного параметра политики вы можете посмотреть на следующей иллюстрации:

Рис. 5. Определение фонового изображения рабочего стола средствами групповой политики

Так как данный параметр – последний изменяемый параметр политики, после этого можно закрывать редактор управления групповыми политиками.

5. Ограничение области применения объекта групповой политики

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

Это означает, что нужно на вкладке «Область» (Scope) оснастки «Управление групповой политикой» (Group Policy Management) перейти к секции «Фильтры безопасности» (Security Filtering), удалить установленную по умолчанию группу «Прошедшие проверку» (Authenticated Users) и выбрать созданную на втором этапе группу. В конечном счете данная вкладка у вас должна выглядеть следующим образом:

Рис. 6. Определение области действия объекта групповой политики

6. Наслаждаемся полученным результатом

Теперь, после того как все требуемые действия были выполнены, осталось сделать последний шаг в реализации данной задачи – тестирование. Для этого либо на этом же компьютере, либо на тестовой клиентской машине выполняем вход под учетной записью любой женщины, на компьютер которой должны применяться наши изменения. Так как перед установкой фонового изображения нужно, чтобы файл успел скопироваться на машину, возможно придется применить параметры политики несколько раз.

В результате рабочий стол должен выглядеть следующим образом:

Рис. 7. Новое изображение к 8-му марта

Заключение

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

А самое главное, не забудьте поздравить своих родных и знакомых с грядущим замечательным праздником 🙂

VN:F [1.9.22_1171]
Rating: 9.8/10 (11 votes cast)
Совет недели (2014-03-1): «За милых дам» или маленькое поздравление с 8 марта средствами Windows PowerShell и GPO, 9.8 out of 10 based on 11 ratings

6 комментариев

  1. Дима — скажи, а зачем ты делал Import-CSV и Export-CSV — в разных командах, если можно было в том же get-ADUsers через конвейер добавлять в группу??? или нельзя?? 🙂
    Но мысль классная — сегодня В Магадане уже поздно, а вот на следующий год — воспользуюсь! 🙂

    только тут еще одна засада — у тех женщин, у которых есть права — есть возможность ставить свои картинки на рабочий стол — и если ты им это снесешь — им будет обидно… То есть надо подумать — как сохранить старые настройки — и после праздника вернуть их обратно! 🙂

    VA:F [1.9.22_1171]
    Rating: +2 (from 2 votes)
    1. В принципе, средствами PowerShell можно реализовать очень много интересных вещей и я более чем уверен, что те же действия, о которых я написал в этой статье, можно решить и другими методами, не только через конвейеры 🙂
      А вот по сохранению старых настроек, если интересно, могу как-то расписать, что и как нужно сделать…

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
    2. Сам себе и отвечу здесь. Функция add-adgroupmember не принимает конвейер для -Member. Поэтому либо через csv. Либо все это в переменную и через foreach обрабатывать.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  2. Дим, вкралась ошибка: Сначала
    | Export-CSV “C:\Script\
    а потом
    Import-CSV «C:\Scripts\
    поправь, плз.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *