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

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

Ответить
Настройки темы
PowerShell - Создание пользователей AD с определенными атрибутами

Новый участник


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

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


Коллеги, всем привет.

Задача простая, но ломаю горову уже третий день... ошибка на ошибке и что не так делаю, хбз..
Вводные:
Есть 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

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Пример файла эксель - в студию

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:35, 20-02-2023 | #2



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

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


Аватара для Elven

Ветеран


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

Профиль | Сайт | Отправить 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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


К сожалению, часто через N дней ломания головы и облазывания всего интернета почему-то результаты этих усилий полностью отсутствуют.
И исходный файл тоже сами нарисуйте.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:42, 22-02-2023 | #4


Новый участник


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

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


Вложения
Тип файла: txt test.txt
(176 байт, 6 просмотров)

Цитата DJ Mogarych:
К сожалению, часто через N дней ломания головы и облазывания всего интернета почему-то результаты этих усилий полностью отсутствуют.
И исходный файл тоже сами нарисуйте. »
Сори за молчание, был командировке, не мог много времени уделить теме:
Привер файла приложил (заменить 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
Благодарности: 697

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


литеральные хэштейблы не чувствительны к регистру, поэтому ошибка на ключах в $Translit (а и А считается дублем), и нужно создавать .net-тип. $Translit = new-object System.Collections.Hashtable и добавлять в него как угодно, хоть в итерации по массивам строк, хоть копипастом.

Отправлено: 07:28, 28-02-2023 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Цитата pernatiy05:
Ошибка на переменной translite »
Какая ошибка?

Вот эта строка то ли недописана, то ли ещё что:
Код: Выделить весь код
$transuname = $transLastName +

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:40, 28-02-2023 | #7


Новый участник


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

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


Цитата DJ Mogarych:
$transuname = $transLastName + »
Да, тут разобрался, не хватало " " + $transFirstName + " " + $transInitials ` - что бы все 3 столбца перевел в транслит.

После добавления данных появляется ошибка
Цитата DJ Mogarych:
Какая ошибка? »
Скрытый текст

строка:10 знак:1
+ New-ADUser -Name $transuname `
+ ~~~~~~~~~~
Непредвиденная лексема "New-ADUser" в выражении или операторе.
+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken


Цитата Sham:
литеральные хэштейблы не чувствительны к регистру, поэтому ошибка на ключах в $Translit (а и А считается дублем), и нужно создавать .net-тип. $Translit = new-object System.Collections.Hashtable и добавлять в него как угодно, хоть в итерации по массивам строк, хоть копипастом. »
Примерно понимаю про что вы говорите, но PS только только начинаю осваивать, так что пока это дремучий лес для меня

Отправлено: 09:54, 28-02-2023 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Попробуйте
Код: Выделить весь код
New-ADUser -Name "$transuname"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:09, 28-02-2023 | #9


Новый участник


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

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


Цитата DJ Mogarych:
New-ADUser -Name "$transuname" »
Заменил, + добавил проверку админских прав, Ошибка другая, но права у меня 100% есть
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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход