sergey vasin

The IT blog

Использование PowerShell для обновления адресной информации в Active Directory — Hey, Scripting Guy! Blog

leave a comment »

Указание адресной информации в 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

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/02/use-powershell-to-update-address-info-in-active-directory.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Ноябрь 2, 2012 в 18:36

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s