2016-11-10 2 views
0

Я создаю скрипт для автоматизации развертывания AD для клиентов. У нас есть подготовленный список пользователей и групп в файлах CSV. Группы организованы в файл со следующим форматом. Имейте в виду, что я использую один и тот же CSV-файл для создания групп AD (что происходит на предыдущем шаге).Функция Powershell для добавления пользователей в группу AD из CSV

Name,Description,Members 
GroupName,GroupDescription,"user1,user2,user3" 

код, я использую, чтобы добавить пользователей к группам ниже:

$groups = Import-CSV -Path $groupCSVPath 
$groups | % { Add-ADGroupMember -Identity $_.Name -Members $_.Members } 

Это приводит к ошибке: Get-ADUser: Не удается найти объект с идентичностью: «user1 , user2, user3 '.

Если я попытаюсь следующее, это работает:

Add-ADGroupMember -Identity "GroupName" -Members user1,user2,user3 

ошибка появляется ссылаться на команду Get-ADUser, который не принимает массивы в качестве входов. Однако команда Add-ADGroupMember делает это. Почему я получаю ошибку Get-ADUser при использовании команды Add-ADGroupMember и как я могу заставить ее принимать массив значений для имени пользователя AD?

+0

Похоже, ваш файл CSV действительно список списков. Каждая запись в файле CSV содержит одно имя GroupName, один GroupDescription и список пользователей. Правильно? Существует способ «нормализовать» эти данные, чтобы каждая запись содержала GroupName, GroupDescription и ровно один Пользователь. Больше записей, меньше данных в каждой записи. Тем не менее, я не отправляю это как ответ, потому что он имеет серьезный недостаток. –

ответ

1

Tricky один. Проблема заключалась в том, что параметр $_.members передается командному команду Add-ADGroupMember как одна строка, а не массив отдельных значений из-за того, как работает Import-CSV. Get-Help Add-ADGroupMember показывает, что параметр members ожидает массив, а не строку.

Это должно работать, я проверил это:

$groups | % { Add-ADGroupMember -Identity $_.Name -Members $_.members.split(',') }

+0

Да, это было сложно, но люди здесь, на SO, снова пришли на помощь. Благодаря! – McKenning

Смежные вопросы