Комментарии 24
Наличие пароля в открытом виде не очень хорошо. А так нормальное решение. Ещё более правильно, кмк, получать данные прямо из отдела кадров.
— Никакой проверки на конфликты имени учетки. Нет схемы для альтернативного именования тех у кого логин конфликтует уже с существующим сотрудником.
— Никакой возможности проверки того, что могут быть люди с совпадающим ФИО.
— Смену фамилии тоже не отловить.
— Куча ручной работы вместо автоматизированной выгрузки из кадровой учетной системы (не говоря уже о прямом дерганье из нее данных)
— Имя учетки с заглавными буквами это антипаттерн, хорошо хоть точку ставят после фамилии и перед ИО, а то половина мужиков у некоторых тут же в женщин превращается, что пытаются безуспешно решить заглавными буквами, но это всеравно выглядит архитектурным факапом.
— Логи, где логи? А ловля исключений? А вдруг сервер отказал в создании учетки где посреди новых 500 человек?
— Табельный номер? Почему employeeid не заполняется?
— Как вы отличите две одинаковых ФИО не получая от кадров хотя бы их день и месяц рождения?
— Ставка полная? Совместительство? по ГПХ? — как вы поймете что пора отзывать определенные доступы?
— Учетку нужно сразу класть в нужную OU, ибо там групповые политики специфичные для подразделения.
Неавтоматизированный организационный процесс должен всегда проходить через отдел кадров, только они являются единственным достоверным источником данных, а никак не руководитель сотрудника.
function Convert2Latin($inString) {
# Обрезаем пустые пробелы по краям
$inString = $inString.Trim()
# Определяем таблицу соответствия
$char_ru="а","А","б","Б","в","В","г","Г","д","Д","е","Е","ё","Ё","ж", "Ж", "з","З","и","И","й","Й", "к","К","л","Л","м","М","н","Н","о","О","п","П","р","Р","с","С","т","Т","у","У","ф","Ф","х", "Х", "ц", "Ц", "ч", "Ч", "ш", "Ш", "щ", "Щ","ъ","Ъ","ы","Ы","ь","Ь","э","Э","ю", "Ю", "я", "Я"
$char_en="a","A","b","B","v","V","g","G","d","D","e","E","e","E","zh","Zh","z","Z","i","I","y","Iy","k","K","l","L","m","M","n","N","o","O","p","P","r","R","s","S","t","T","u","U","f","F","kh","Kh","ts","Ts","ch","Ch","sh","Sh","sch","Sch","","","y","Y","","", "e","E","yu","Yu","ya","Ya"
$TempString = ""
# Перебираем слово по буквам
for ($i = 0; $i -lt $inString.Length; $i++)
{
$t = -1
# Выясняем позицию заменямой буквы в массиве
Do {$t = $t+1}
Until (($inString[$i] -ceq $char_ru[$t]) -or ($t -eq 100))
# Дополняем строку конвертированного одновременно производя замену русской буквы на английскую
$TempString = $TempString + ($inString[$i] -creplace $char_ru[$t], $char_en[$t])
}
return $TempString
}
Ну в скрипте где должность и где подразделение?
Я не пониманию как на 10к пользователей можно жить без IdM. Пускай даже самописной.
# Функция транслитерации ru->en
Function global:Get-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
}
Скиньте отссылку пожалуйста где упоминаюся паттерны с размером букв? Писать фамилию с большой буквы принято ведь везде. Обработку исключений и логи в скрипт бы не мешало добавить, согласен.
Все остальные замечания в моем случае не применимы, у меня более 100 разных юр. лиц в одном домене и у каждого свой отдел кадров, потому более глубокая интеграция с ними слишком сложна
Вы пишите "к вам это не применимо". Я поздравляю вас, вы справились со своей работой на отлично! Спасибо, теперь все понятно и можно не беспокоится :)
Но тогда зачем вы писали эту статью на Хабре, если она только ДЛЯ ВАС, если она ТОЛЬКО ВАША? Можете начальнику отдела отчитаться он вас похвалит.
у меня более 100 разных юр. лиц в одном домене и у каждого свой отдел кадров, потому более глубокая интеграция с ними слишком сложнаНу если вы работаете в подразделении уборщиц, то так и есть. Уборщицы не могут даже кому то запретить сорить, их задача убирать.
У ИТ тоже есть свои требования по предоставлению им информации, как и у бухгалтерии, экономистов и юристов и все их должны соблюдать. Кадровые службы вообще всегда «ЗА», они получают актуальные справочники и им не требуется слать какие то заявки на создание и блокировку учеток.
Про количество контор — неважно сколько, главное где кадровые учетные системы и кто их обслуживает.
в АД добавляется сотрудник уже с правами, руководителем и всей ерундой что нужно.
Таким же методом увольняем. 1 кнопка, сотрудник не активен в АД + убиваются сессии на трминальных серверах, где 1Ска.
в целом все =)
HR занимается рекрутингом, онбоардингом и прочими связанными с сотрудниками общеорганизационными процессами.
Кадровики занимаются работой в ЗУП и учетом рабочего времени, т.е. всем делопроизводством связанным с ТК.
У вас что именно то? :)
можно подзапариться и вносить сразу в ЗУП ( через API )Можно, но зачем если кадровик так и так внесет сотрудника в ЗуП? Или если это сделает ИТшнек и в ЗуП залетит через API это будет более лофтово? А ИНН, снилсы и прочую персоналку типа паспортных данных Вы тоже туда заносите?
Я просто хотел себя освободить от рутины создания юзера в AD\1C, сделал такой портал и все. Это работает. Задача выполнена.
и наверное главная ремарка, у нас не штата как в сабже, то есть у меня речь о «до 100 сотрудников».
Ну ладно вам, писать портал для 100 сотрудников? 100 УЗ набиваются одним человеком за 2-4 дня в зависмости от мотивации. Портал ради портала и строчки в резюме, это да
Можно добавить интеграцию в кадровую систему. Но лично я бы давал страничку регистрации пользователю и пусть он сам всё вносит. Потом просто сверка бумаги с внесёнными данными и одна кнопка "готово".
Сам делаю это более 10 лет (для учреждений образования). Начиналось с подобного csv, которое позже превратилось в программку на Делфи, генерирующую DSADD и прочее (создать каталоги пользователей, поставить права).
При автотранслитерации ФИО в логины латиницей (Иван Иванов -> iivanov) главное не забывать проверять результат на содержание неблагозвучных вариаций, например «eb», «fuck» в готовом логине.
И проверки на уже существующие логины — обязательны (много раз случалось).
На масштабах от 5000+ без этого уже нереально процессы рабочие получить.
Автор по нолику не приписал к своим реалиям? ))
Автоматизируем ведение большого количества пользователей в AD