Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] AD - Добавление в группу на основе атрибутов

Ответить
Настройки темы
PowerShell - [решено] AD - Добавление в группу на основе атрибутов

Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: rudimko
Дата: 03-10-2012
Добрый день, всем гуру PowerSell'a!
Прошу помощи в написании скрипта, цель которого будет следующей:
В зависимости от того как заполнен атрибут "Организация" в AD у пользователя, добавлять его в соответствующую группу. Т.е., я так понимаю, надо как-то сначала задать какая организация будет приравниваться какой группе (например для Организации "Организация 1" должна быть добавлена группа "Пользователи-1" если она еще не добавлена и т.д.
Заранее огромное спасибо...

Отправлено: 19:13, 12-09-2012

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$users = Get-ADUser -Filter * -Properties organization
foreach($user in $users)
{
	switch($user.Organization)
	{
		"Org1" {Add-ADGroupMember -Identity Group1 -Members $user;break}
		"Org2" {Add-ADGroupMember -Identity Group2 -Members $user;break}
		"Org3" {Add-ADGroupMember -Identity Group3 -Members $user;break}
		"Org4" {Add-ADGroupMember -Identity Group4 -Members $user;break}
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:58, 13-09-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Спасибо. Небыло времени еще разобраться, но мысль ясна. Позже отпишусь.

Отправлено: 08:44, 19-09-2012 | #3


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Супер, все отлично работает. Только атрибут organization сменил на company.
Возник следующий вопрос:

Можно ли исключить пользователя сразу из нескольких групп по маске?
Игрался с командлетом "Remove-ADGroupMember -Identity Group -Members $user -Confirm:$False", так ничего и не вышло...

Отправлено: 08:08, 01-10-2012 | #4


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


$user.memberof |Where {!($_ -like "Of*")} | Remove-ADGroupMember -Members $user
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:04, 01-10-2012 | #5


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Супер! Ну а для того чтобы совсем автоматизировать процесс... как бы сделать так, чтобы не плодить условия, а поставить в цикл из расчета компаний и групп?

Что имеем на текущий момент, условие для одной компании и группы:
читать дальше »
Код: Выделить весь код
$Company_01 = 'Компания-01'
$Company_02 = 'Компания-02'
$Company_03 = 'Компания-03'

$Group_01 = 'Пользователи-01'
$Group_02 = 'Пользователи-02'
$Group_03 = 'Пользователи-03'

$users = Get-ADUser -Filter {(name -like "Иванов Иван Иванович") -and (Enabled -eq "True")} -Properties "Company","MemberOf"
foreach ($user in $users)
{
	switch ($user.Company) {
		
		$Company_01 {
			if ($user.MemberOf -match $Group_01) {
				"$($user.Name) уже находится в группе $Group_01"
			}
			else {
				if ($user.MemberOf -match "Пользователи-*") {
					$user.MemberOf | Where {($_ -match "Пользователи-*")} | Remove-ADGroupMember -Members $user
					"$($user.Name) удален из всех пользовательских групп"
				}
				Add-ADGroupMember -Identity $Group_05_MO -Members $user
				"$($user.Name) добавлен в группу $Group_01"
			}
		}
		
	}
}

Последний раз редактировалось rudimko, 01-10-2012 в 15:36.


Отправлено: 14:16, 01-10-2012 | #6


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


И что это за условие?

Отправлено: 15:26, 01-10-2012 | #7


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Kazun, прошу прощения, не тот кусок вставил... =\ Смысл такой, что если пользователь еще не в "нужной" группе, тогда исключаем его из всех групп по маске "Пользователи-*" и назначаем ему "нужную" группу. Хотелось бы как-то автоматизировать процесс для остальных компаний и групп, чтобы не дублировать тоже самое, изменяя переменные компании и группы... Это возможно?

Код: Выделить весь код
		$Company_01 {
			if ($user.MemberOf -match $Group_01) {
				"$($user.Name) уже находится в группе $Group_01"
			}
			else {
				if ($user.MemberOf -match "Пользователи-*") {
					$user.MemberOf | Where {($_ -match "Пользователи-*")} | Remove-ADGroupMember -Members $user
					"$($user.Name) удален из всех пользовательских групп"
				}
				Add-ADGroupMember -Identity $Group_05_MO -Members $user
				"$($user.Name) добавлен в группу $Group_01"
			}
		}

Отправлено: 15:36, 01-10-2012 | #8


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$hash = @{"Company1" = "gr1";"Company2"="gr2"}

if($gr = $hash[$user.company])
{
	if ($user.MemberOf -match $gr) {
				"$($user.Name) уже находится в группе $gr"
	}
	else {
		$user.MemberOf | Where {$_ -match "Пользователи-*"} | Remove-ADGroupMember -Members $user
		"$($user.Name) удален из всех пользовательских групп"
		Add-ADGroupMember -Identity $gr -Members $user
		"$($user.Name) добавлен в группу $gr"
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:51, 01-10-2012 | #9


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Здорово! Премного благодарен!

Отправлено: 15:56, 01-10-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] AD - Добавление в группу на основе атрибутов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Вопрос - Можно ли учётку, входящую в группу "администраторы" ограничить в правах? Arwed Защита компьютерных систем 7 19-03-2011 18:48
Интерфейс - Добавление пункта "Загрузки" в меню "Пуск" Deja7u Microsoft Windows 2000/XP 5 09-01-2011 21:27
[решено] Помогите сделать кнопку для создания атрибута окну "поверх всеx" Pozia AutoIt 2 21-02-2009 22:48
Жесть: "Линуксоиды представляют собой большую, сплоченную группу неадекватных людей." xoomer Новости и флейм из мира *nix 10 18-06-2007 06:22




 
Переход