|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Создание пользователей AD с определенными атрибутами |
|
|
PowerShell - Создание пользователей AD с определенными атрибутами
|
Новый участник Сообщения: 8 |
Коллеги, всем привет.
Задача простая, но ломаю горову уже третий день... ошибка на ошибке и что не так делаю, хбз.. Вводные: Есть Excel файл со списком УЗ (ФИО Email и т.д.) по столбцам атрибуты данной учетки: 1. Срок ее действия [AccountExpires] 2. Адрес эл. почты подрядчика [mail] 3. Номер мобильного телефона [telephoneNumber] 4. Компания [Company] 5. Ответственный со стороны заказчика [Info] 6. Номер заявки в системе [Description] 7. Должность/роль в проекте [Title] 8. Полные фамилия, имя, отчество [DisplayName] 9. Проект или другое направление [Department] Нужно накидать скрипт PS, который возьмет из Excel список и создаст в AD нужных пользователей с нужными атрибутами, которые ранее заполнены в Excel. Возможно еще конвертить из Excel в *.cvs - если с помощью него проще, то и этот вариант рассматриваю Темы смотрел в данной ветке, есть подобные, но конкретно по моей ничего такого нет.... а собрать из всех тем единую так и не осилил.. Всем спасибо за помощь!!! |
|
Отправлено: 08:55, 20-02-2023 |
fascinating rhythm Сообщения: 6666
|
Профиль | Отправить PM | Цитировать Пример файла эксель - в студию
|
------- Отправлено: 13:35, 20-02-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать 1. Пишем заготовку (один из вариантов)
1.1. Открываем ADUC, создаем пользователя (неважно какого, тестового), заполняем у него все те поля которые нужно будет заполнять у реальных пользователей, разворачиваем снизу "журнал windows powershell" и копируем оттуда несколько последних по времени команд в удобный редактор кода под пошик. 1.2. Разбираемся что в них, подменяем переменными то, что нужно будет тянуть из файла, пробуем создать второго тестового пользователя чисто из пошика, смотрим на ошибки, разбираемся с ними, с теми с которыми не получилось справиться - жалуемся сюда,. но это будет, по крайней мере, готовый на 90% скрипт, а не сферический конь в вакууме. 2. Задача как вытянуть данные из екселя или csv (кстати, чтобы не мучаться с дополнительным модулем - рекомендую все же csv), это уже будет плевая задача, по сравнению с первым пунктом, если сильно интересно побегать перед паровозом - можно поиграться с import-csv (или, если вариант с excel привлекательнее - с модулем ImportExcel https://github.com/dfinke/ImportExcel ). |
Отправлено: 15:31, 22-02-2023 | #3 |
fascinating rhythm Сообщения: 6666
|
Профиль | Отправить PM | Цитировать К сожалению, часто через N дней ломания головы и облазывания всего интернета почему-то результаты этих усилий полностью отсутствуют.
И исходный файл тоже сами нарисуйте. |
------- Отправлено: 16:42, 22-02-2023 | #4 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Привер файла приложил (заменить txt на csv), так же код на просторах интернета нашел, даже с транслитом в латиницу, но что то не так с ним: Скрытый текст
Import-Module activedirectory Import-Csv "C:\test.csv" | ForEach-Object { $upn = $_.SamAccountName + “@contoso.loc” $uname = $_.LastName + " " + $_.FirstName + " " + $_.Initials #переводим в транслит фамилию, имя и отчество $transLastName=Translit($_.LastName) $transFirstName=Translit($_.FirstName) $transInitials=Translit($_.Initials) $transuname = $transLastName + New-ADUser -Name $transuname ` -DisplayName $uname ` -GivenName $_.FirstName ` -Surname $_.LastName ` -Initials $_.Initials ` -OfficePhone $_.Phone ` -Department $_.Department ` -Title $_.JobTitle ` -UserPrincipalName $upn ` -SamAccountName $_.samAccountName ` -Path $_.OU ` -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -force) -Enabled $true } #сама функция транслитерации function global:Translit { param([string]$inString) $Translit = @{ [char]'а' = "a" [char]'А' = "A" [char]'б' = "b" [char]'Б' = "B" [char]'в' = "v" [char]'В' = "V" [char]'г' = "g" [char]'Г' = "G" [char]'д' = "d" [char]'Д' = "D" [char]'е' = "e" [char]'Е' = "E" [char]'ё' = "yo" [char]'Ё' = "Yo" [char]'ж' = "zh" [char]'Ж' = "Zh" [char]'з' = "z" [char]'З' = "Z" [char]'и' = "i" [char]'И' = "I" [char]'й' = "j" [char]'Й' = "J" [char]'к' = "k" [char]'К' = "K" [char]'л' = "l" [char]'Л' = "L" [char]'м' = "m" [char]'М' = "M" [char]'н' = "n" [char]'Н' = "N" [char]'о' = "o" [char]'О' = "O" [char]'п' = "p" [char]'П' = "P" [char]'р' = "r" [char]'Р' = "R" [char]'с' = "s" [char]'С' = "S" [char]'т' = "t" [char]'Т' = "T" [char]'у' = "u" [char]'У' = "U" [char]'ф' = "f" [char]'Ф' = "F" [char]'х' = "h" [char]'Х' = "H" [char]'ц' = "c" [char]'Ц' = "C" [char]'ч' = "ch" [char]'Ч' = "Ch" [char]'ш' = "sh" [char]'Ш' = "Sh" [char]'щ' = "sch" [char]'Щ' = "Sch" [char]'ъ' = "" [char]'Ъ' = "" [char]'ы' = "y" [char]'Ы' = "Y" [char]'ь' = "" [char]'Ь' = "" [char]'э' = "e" [char]'Э' = "E" [char]'ю' = "yu" [char]'Ю' = "Yu" [char]'я' = "ya" [char]'Я' = "Ya" } $outCHR="" foreach ($CHR in $inCHR = $inString.ToCharArray()) { if ($Translit[$CHR] -cne $Null ) {$outCHR += $Translit[$CHR]} else {$outCHR += $CHR} } Write-Output $outCHR } Ошибка на переменной translite а где понять не могу... |
||
Отправлено: 04:42, 28-02-2023 | #5 |
Deadooshka Сообщения: 2558
|
Профиль | Отправить PM | Цитировать литеральные хэштейблы не чувствительны к регистру, поэтому ошибка на ключах в $Translit (а и А считается дублем), и нужно создавать .net-тип. $Translit = new-object System.Collections.Hashtable и добавлять в него как угодно, хоть в итерации по массивам строк, хоть копипастом.
|
Отправлено: 07:28, 28-02-2023 | #6 |
fascinating rhythm Сообщения: 6666
|
Профиль | Отправить PM | Цитировать Цитата pernatiy05:
Вот эта строка то ли недописана, то ли ещё что: |
|
------- Отправлено: 09:40, 28-02-2023 | #7 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
После добавления данных появляется ошибка Цитата DJ Mogarych:
Скрытый текст
строка:10 знак:1 + New-ADUser -Name $transuname ` + ~~~~~~~~~~ Непредвиденная лексема "New-ADUser" в выражении или операторе. + CategoryInfo : ParserError: ( ![]() + FullyQualifiedErrorId : UnexpectedToken Цитата Sham:
|
|||
Отправлено: 09:54, 28-02-2023 | #8 |
fascinating rhythm Сообщения: 6666
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:09, 28-02-2023 | #9 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
ps "DC=domen" - специально изменил, конф.инфа ))) Скрытый текст
Проверка наличия прав администратора... Права администратора есть – продолжить скрипт... New-ADUser : Отказано в доступе строка:18 знак:1 + New-ADUser -Name "$transuname" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (CN=Ole Voron Se...DC=domen,DC=ru:String) [New-ADUser], UnauthorizedAccessException + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.UnauthorizedAccessException,Microsoft.ActiveDirectory.Management.Comman ds.NewADUser -DisplayName : Имя "-DisplayName" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а такж е наличие и правильность пути, после чего повторите попытку. строка:19 знак:1 + -DisplayName $uname ` + ~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (-DisplayName:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException |
|
Отправлено: 10:28, 28-02-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Powershell GUI и создание пользователей в AD | Charg | Скриптовые языки администрирования Windows | 17 | 14-01-2019 14:55 | |
CMD/BAT - [решено] Обработка файлов с определенными атрибутами | your_jonathan_livingston@vk | Скриптовые языки администрирования Windows | 3 | 13-11-2016 15:35 | |
PowerShell - Создание пользователей в AD (с запросом данных) | rudimko | Скриптовые языки администрирования Windows | 15 | 02-04-2014 16:33 | |
Создание групп пользователей в AD и настройка их параметров | Vladimir_17 | Microsoft Windows NT/2000/2003 | 7 | 12-07-2013 12:03 | |
VBS/WSH/JS - Создание пользователей в AD win 2003 | russor | Скриптовые языки администрирования Windows | 1 | 03-04-2011 18:13 |
|