Добавление нескольких пользователей в несколько подразделений с помощью однострочной команды powershell - PullRequest
0 голосов
/ 09 апреля 2019

Я очень новичок в PowerShell, и у меня есть файл .csv, который содержит 100 разных пользователей с полями Имя, Фамилия, Раздел и в зависимости от раздела, который пользователь должен создать в этом конкретном подразделении.Пример: Джо, Сердце, Учетные записи - Когда я выполняю команду I, пользователь должен быть создан в Организационном подразделении Учетных записей.

Самая большая проблема заключается в том, что мне нужно использовать только 1-строчную команду для создания 100 пользователей в их соответствующем подразделении.Я пробовал несколько команд и смотрел множество видео, но ни одна из них не работает.Я работаю на Windows Server 2012.

В настоящее время я пытаюсь использовать эту команду

Import-Csv C:\Users\Administrator\Desktop\HomeList.csv  
       | ForEach-Object { Set-ADOrganizationalUnit -Identity $_.Section -Member $_.Name } 

И получаю ошибку

AНевозможно найти параметр, который соответствует имени параметра 'Member'

1 Ответ

0 голосов
/ 10 апреля 2019

Так как это школьное упражнение, я не думаю, что было бы хорошо дать вам рабочий фрагмент кода для простого копирования / вставки. Тем не менее, я могу дать вам советы о том, где искать ..

CSV-файл содержит следующие поля: Name, Surname, Section, где

  • «Имя» - это имя пользователя
  • 'SurName' - фамилия пользователя
  • 'Раздел' - это (отображаемое) имя OU

Каждый пользователь в CSV должен быть перемещен в указанное подразделение, и для этого у модуля ActiveDirectory есть командлет Move-ADObject , поэтому вы выполняете итерацию по данным с помощью Foreach-Object {... }

Здесь нужно решить несколько вопросов.

Во-первых, командлет Move-ADObject принимает параметр -Identity, который может быть либо DistinghuishedName, либо GUID. Вы также можете передать ему объект ADUser.
В вашем CSV у вас есть имя пользователя (свойство AD GivenName) и фамилия пользователя (свойство SurName), поэтому вам нужно сначала получить пользователя object из AD, чтобы возможность использовать Move-ADObject.

Для этого в Интернете можно найти несколько ответов, оба из которых используют -Filter, а также -LDAPFilter параметры Get-ADUser .

Вторая проблема заключается в том, что Move-ADObject нужен параметр -TargetPath в виде DistinghuishedName , и поскольку ваш CSV-файл содержит только (отображаемое) имя целевого подразделения, вам необходимо получить это тоже первое. Командлетом для этого является Get-ADOrganizationalUnit , где вы можете использовать параметр -Filter, например, так: -Filter "Name -eq '$($_.Section)'"

Примечание: вы также можете использовать Get-ADObject и фильтр для "ObjectClass -eq 'organizunit'" в качестве альтернативы для Get-ADOrganizationalUnit, но это немного сложнее.

Если у вас есть оба объекта AD, вы можете использовать командлет Move-ADObject, чтобы переместить пользователя в целевое подразделение, но всегда добавляйте переключатель -WhatIf в команду, когда пробуете свой код. Только если вы удовлетворены результатами, показанными на консоли, вы можете отключить этот переключатель.

Пожалуйста, , а не , попытайтесь поместить все это в одну строку. Запишите это и добавьте комментарии к коду. Если у вас все получилось, вы можете захотеть немного ускорить процесс, упорядочив данные из CSV с помощью Group-Object

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...