![]() |
[решено] AD - Добавление в группу на основе атрибутов
Добрый день, всем гуру PowerSell'a!
Прошу помощи в написании скрипта, цель которого будет следующей: В зависимости от того как заполнен атрибут "Организация" в AD у пользователя, добавлять его в соответствующую группу. Т.е., я так понимаю, надо как-то сначала задать какая организация будет приравниваться какой группе (например для Организации "Организация 1" должна быть добавлена группа "Пользователи-1" если она еще не добавлена и т.д. Заранее огромное спасибо... |
Код:
$users = Get-ADUser -Filter * -Properties organization |
Спасибо. Небыло времени еще разобраться, но мысль ясна. Позже отпишусь.
|
Супер, все отлично работает. Только атрибут organization сменил на company.
Возник следующий вопрос: Можно ли исключить пользователя сразу из нескольких групп по маске? Игрался с командлетом "Remove-ADGroupMember -Identity Group -Members $user -Confirm:$False", так ничего и не вышло... |
$user.memberof |Where {!($_ -like "Of*")} | Remove-ADGroupMember -Members $user
|
Супер! Ну а для того чтобы совсем автоматизировать процесс... как бы сделать так, чтобы не плодить условия, а поставить в цикл из расчета компаний и групп?
Что имеем на текущий момент, условие для одной компании и группы: |
И что это за условие?
|
Kazun, прошу прощения, не тот кусок вставил... =\ Смысл такой, что если пользователь еще не в "нужной" группе, тогда исключаем его из всех групп по маске "Пользователи-*" и назначаем ему "нужную" группу. Хотелось бы как-то автоматизировать процесс для остальных компаний и групп, чтобы не дублировать тоже самое, изменяя переменные компании и группы... Это возможно?
Код:
$Company_01 { |
Код:
$hash = @{"Company1" = "gr1";"Company2"="gr2"} |
Здорово! Премного благодарен!
|
Еще маленький вопросик:
Возможно ли, при исключении из групп по маске "Пользователи-*", сделать вывод информации из каких именно групп был исключен пользователь? |
У командлета Remove-ADGroupMember есть параметр PassThru.
|
А как этот параметр можно применить\отобразить через Write-Host?
|
Добавить в Foreach
|
Вроде бы работает, но т.к. я совсем неопытный, прошу посмотреть и поправить, правильно ли?
Код:
$grdel = $user.MemberOf | Where {$_ -match "Пользователи-*"} | Remove-ADGroupMember -Members $user -Confirm:$false -PassThru |
Всем доброго времени суток.
Пришел сюда просить о помощи. Я только приступаю к изучению PowerShell, а посоветоваться в реале мне к сожалению не с кем. В общем проблема заключается в следующем. Необходимо пользователей из определенной OU добавить в группы. Но сделать это так, что бы если атрибут пользователя (department) совпадал с именем группы(name), то пользователь автоматически становился её участником. |
Код:
Get-ADUser -Filter {department -like '*'} -SearchBase "OU=MyOY,DC=Contoso,DC=Com" | Group-Object Department | Foreach { |
Огромное Вам спасибо! Сейчас буду пробовать.
|
Доброго времени суток.
Пришлось внести некоторые изменения в скрипт. Выяснилось, что значение атрибута departament отличается от имени группы наличием в конце пробела. Попытался решить это путем добавления подстановочного символа. $gr = Get-ADGroup -Filter "Name -eq '$($_.Name)*'" (Подскажите пожалуйста, верно ли я вставил подстановочный символ "*" ?) Так же внес некоторые изменения в фильтр поиска пользователей, исключив от туда "ненужных". Однако при запуске скрипта, он ругается на позиционный параметр, нашел на форуме идентичную проблему, однако символа переноса строки (удаления которого решило проблему) не нашел. Подскажите пожалуйста, в чем может быть причина. Код:
Get-ADGroup : Не удается найти позиционный параметр, принимающий аргумент "if". |
Пригласите более грамотного специалиста к компьютеру, который сможет правильно скопировать мой пост выше, а не как вздумается, все в одну строку(знак разделения между командами ; ).
|
Kazun, прошу прощенья за мою неграмотность в PS и прошу не судить меня строго, все когда то приходится делать в первый раз.
Запустил скрипт через ISE, однако снова ошибка. Подскажите плз, что делать. Код:
Get-ADGroup : Фильтр поиска не опознан |
Код:
Get-ADUser -Filter "department -notlike 'департамент*'" -SearchBase "OU=Test,DC=CB,DC=LS" -Properties Department | Group-Object Department | Foreach { |
Большое спасибо Kazun! Просто огромное! Не сочтите за наглость подскажите пожалуйста ещё один момент. Оказалось, что в значении атрибута department в конце стоит пробел. Из за этого значения атрибутов department(у пользователей) и name (у групп) отличаются. Попытался решить это путем добавления подстановочного символа *. Однако ничего не получилось, в разных вариантах скрипт либо не отрабатывает либо выдает ошибку.
Код:
Правил здесь |
$gr = Get-ADGroup -Filter "Name -like '$($_.Name.TrimEnd())'"
|
Моей благодарности нет предела! Спасибо огромное!
|
Время: 06:29. |
Время: 06:29.
© OSzone.net 2001-