Указание адресной информации в Active Directory
Есть несколько подходов для указания адресной информации в ActiveDirectory. Первый подход – это поиск определенных значений и исправление несоответствующих. Второй подход – это поиск пустых, или null значений определенных атрибутов и указание только отсутствующих данных. Третий подход – это указание новых значений всем пользователям, подходящим по определенным параметрам. Этим мы и займемся.
Заметка: Это четвертый пост в серии о создании тестового окружения Active Directory. Во вторник я опубликовал пост «Создание тестовых пользователей в тестовом окружении Active Directory с помощью PowerShell», где я привел скрипт для создания тестового организационного подразделения, содержащее 100 пользователей. В среду я написал пост «Использование PowerShell для Изменения существующих пользовательских учетных записей в Active Directory», где я рассказал о том, как, используя существующую информацию, задать такие параметры, как e-mail адрес и адрес веб-страницы. В четверг я написал пост «Используем PowerShell для стандартизации поля Title в Active Directory». Вам стоит взглянуть и на эти посты тоже.
Перво-наперво, нужно добавить значение атрибута City учетным записям пользователей организационного подразделения TestOU. Это несложно и делается следующим образом:
SetADUserCityProperty.ps1
Import-Module ActiveDirectory
$city = «charlotte», «atlanta»,»jacksonville»
Get-ADUser -SearchBase ‘ou=testou,dc=iammred,dc=net’ -Filter * |
Foreach-Object {
$i= Get-Random -min 0 -Maximum 3
Set-ADUser -identity $_ -City $city[$i] }
Для того, чтобы убедиться, что города присвоились действительно в случайном порядке, введем следующую команду:
PS C:\> Get-ADUser -SearchBase ‘ou=testou,dc=iammred,dc=net’ -Properties city -Filter * | group city -NoElement
Count Name
—— —-
25 jacksonville
40 atlanta
35 charlotte
Создание трех хэш-таблиц для сплаттинга (splatting)
Я собираюсь указать город, штат, улицу, почтовый индекс и страну для каждого пользователя в TestOU. Так как свойство City уже указано, поиск мы будем проводить именно по нему. Однако, может случиться так, что название города нужно будет поменять при задании параметров пользователя, поэтому я решил сделать три хэш-таблицы. Каждая из них будет находиться в переменной с названием города. И каждая из них будет использоваться при задании определенных значений при вызове командлета Set-ADUser, входящего в модуль Active Directory.
Заметка: Не забывайте о том, что названия параметров в хэш-таблице (city, state, streetaddress, postalcode) должны точно соответствовать названию параметров командлета Set-ADUser. Это важно, так как ADSI хранит название города в атрибуте “l” (“L” в нижнем регистре), по командлет использует параметр “City” для отображения этой же информации. Существуют различия и в названии других атрибутов, о чем нужно помнить при переходе со старых ADSI-скриптов к использованию командлетов Active Directory.
Три хеш-таблицы:
$charlotte = @{
«City» = «Charlotte»
«State» = «NC»
«StreetAddress» = «One Microsoft Way»
«PostalCode» = «12345» }
$atlanta = @{
«City» = «Atlanta»
«State» = «GA»
«StreetAddress» = «Two Microsoft Way»
«PostalCode» = «23456» }
$jacksonville = @{
«City» = «Jacksonville»
«State» = «FL»
«StreetAddress» = «Three Microsoft Way»
«PostalCode» = «34567» }
Код для внесения изменений довольно прост. Я использую командлет Get-ADUser для поиска по OU, указав фильтрацию по атрибуту City со значением Charlotte. Потом я передаю результаты комндлету Set-ADUser и указывают хэш-таблицу, содержащую параметры для пользователей из Charlotte. Поскльку все три города находятся в Соединенных Штатах, значение страны – US — я указываю статически в параметре Country. Код для указания адресной информации пользователям из Charlotte:
Get-ADUser -SearchBase ‘ou=testou,dc=iammred,dc=net’ -Filter `
{city -eq ‘charlotte’} |
Set-ADUser @Charlotte -Country US
Теперь пару раз скопируем этот код, чтобы создать команды для указания информации жителям городов Atlanta и Jacksonville. Изменятся только значения фильтра и имена переменных, содержащих хэш-таблицы.
Get-ADUser -SearchBase ‘ou=testou,dc=iammred,dc=net’ -Filter `
{city -eq ‘atlanta’} |
Set-ADUser @atlanta -Country US
Get-ADUser -SearchBase ‘ou=testou,dc=iammred,dc=net’ -Filter `
{city -eq ‘jacksonville’} |
Set-ADUser @jacksonville -Country US
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell