PowerShell: Автоматическое разнесение объектов по OU

Просмотров: 19166Комментарии: 0
ВкусняшкиWindowsFAQ Solutionfor Dummies
PowerShell: Автоматическое разнесение объектов по OU

Уже написано статей не мало о таком замечательном чуде как Microsoft PowerShell. Честно говоря не особо сильно хотел восхвалять этот продукт, но все, и в том числе Администраторы уже все это знают.

Хочу первым делом рассказать предысторию. На текущий момент очень популярна технологии виртуальной инфраструктуры - VDI. Предоставление рабочего места как сервиса. Предположим имеется на одном гипервизоре около 200 машин расположенных а одной OU на которую действует политика ежеднеденльной установки автоматических обновлений на одно и тоже время. Стоит отметить что если 200 машин начнут закачку и установку обновлений - это будет стресс тест для инфраструктуры.

Что пришло в голову - Это разбить на очередь (например на 4), где изменить время начала установки обновлений.

Все сводится к тому - Нужно создать еще 4 OU на которые назначить другие политики.

Но как разделить машины на Эти OU? Руками? cheese Да мисье знает тольк в извращениях).

На помощь мне пришел PowerShell cheese.

Не смотря на то что ты админ, можно вспомнить программирование из Университетской программы. Это не сложно. Вспомнил основы деления по модулю. И на Выходе получаю Вот Такой скрипт сортировки объектов в OU на PowerShell.

#Импортируем AD Модуль
Import-Module ActiveDirectory
#Устанавливаем фильтр по OU
$comps = Get-ADComputer -Filter * -SearchBase "OU=VDI,OU=WKS,OU=Computers Location,DC=olorg,DC=ru"
#Новые OU-шки
$newOU1 = "OU=UpdateHour4,OU=VDI,OU=WKS,OU=Computers Location,DC=olorg,DC=ru"
$newOU2 = "OU=UpdateHour5,OU=VDI,OU=WKS,OU=Computers Location,DC=olorg,DC=ru"
$newOU3 = "OU=UpdateHour6,OU=VDI,OU=WKS,OU=Computers Location,DC=olorg,DC=ru"
$newOU4 = "OU=UpdateHour7,OU=VDI,OU=WKS,OU=Computers Location,DC=olorg,DC=ru"
#Цикл автоматического разнесения машин
for ($i=0; $i -lt $comps.Length; $i++)
{
$idcontainer = $i%4
if($idcontainer -eq 0)
{
Get-ADComputer $comps[$i].Name | Move-ADObject -TargetPath $newOU1
}
if($idcontainer -eq 1)
{
Get-ADComputer $comps[$i].Name | Move-ADObject -TargetPath $newOU2
}
if($idcontainer -eq 2)
{
Get-ADComputer $comps[$i].Name | Move-ADObject -TargetPath $newOU3
}
if($idcontainer -eq 3)
{
Get-ADComputer $comps[$i].Name | Move-ADObject -TargetPath $newOU4
}

Ну а теперь о прелестях этого скрипта:

- Каждый запуск все машины сортируются по новому и по разному раскладываюся по OU.

Собственно все что хотел сегодня Вам рассказать. И как всегда - Жду от Вас комментариев smile.

С уважением Ваш ИТ Инженер.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)