Как стать автором
Обновить

Комментарии 24

Наличие пароля в открытом виде не очень хорошо. А так нормальное решение. Ещё более правильно, кмк, получать данные прямо из отдела кадров.

Комманда -ChangePasswordAtLogon $True говорит пользователю сменить пароль при первом входе, в открытом виде публичный пароль. Приватный юзер ставит сам

Статья жееесть. Не делайте так.

— Никакой проверки на конфликты имени учетки. Нет схемы для альтернативного именования тех у кого логин конфликтует уже с существующим сотрудником.
— Никакой возможности проверки того, что могут быть люди с совпадающим ФИО.
— Смену фамилии тоже не отловить.
— Куча ручной работы вместо автоматизированной выгрузки из кадровой учетной системы (не говоря уже о прямом дерганье из нее данных)
— Имя учетки с заглавными буквами это антипаттерн, хорошо хоть точку ставят после фамилии и перед ИО, а то половина мужиков у некоторых тут же в женщин превращается, что пытаются безуспешно решить заглавными буквами, но это всеравно выглядит архитектурным факапом.
— Логи, где логи? А ловля исключений? А вдруг сервер отказал в создании учетки где посреди новых 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 разных юр. лиц в одном домене и у каждого свой отдел кадров, потому более глубокая интеграция с ними слишком сложна

Вы пишите "к вам это не применимо". Я поздравляю вас, вы справились со своей работой на отлично! Спасибо, теперь все понятно и можно не беспокоится :)


Но тогда зачем вы писали эту статью на Хабре, если она только ДЛЯ ВАС, если она ТОЛЬКО ВАША? Можете начальнику отдела отчитаться он вас похвалит.

Разговор был о том что у вас Андрей Иванов превращается в IvanovA, т.е. в женскую фамилию, и вы городите костыль делая заглавные буквы, что бы это не выглядело так уныло. Но это продолжает выглядеть уныло. Логин не подвергается тем же требованиям как написание ФИО с заглавных букв. Он вообще может не содержать отсылки к ФИО.

у меня более 100 разных юр. лиц в одном домене и у каждого свой отдел кадров, потому более глубокая интеграция с ними слишком сложна
Ну если вы работаете в подразделении уборщиц, то так и есть. Уборщицы не могут даже кому то запретить сорить, их задача убирать.
У ИТ тоже есть свои требования по предоставлению им информации, как и у бухгалтерии, экономистов и юристов и все их должны соблюдать. Кадровые службы вообще всегда «ЗА», они получают актуальные справочники и им не требуется слать какие то заявки на создание и блокировку учеток.

Про количество контор — неважно сколько, главное где кадровые учетные системы и кто их обслуживает.
Вообще это вопрос культуры компании. Бюрократии не избежать в крупных компаниях, но она либо как инструмент борьбы с беспорядком, либо инструмент воздействия и ограничения, когда все взаимодействуют на ножах и только страх, что тебя дро4канут через бесконечные бумажки и согласования не дает пассивной агрессии перейти в активную.
Сделал портал на Python/Django, где заполняется форма регистрации сотрудника, ФИО, адрес, телефон, HR на портале регает сотрудника, после выбирает отдел, подотел и жмет кнопку. Далее магия SSH, формирует сотрудника в АД + высылает по СМС логин\пароль.
в АД добавляется сотрудник уже с правами, руководителем и всей ерундой что нужно.

Таким же методом увольняем. 1 кнопка, сотрудник не активен в АД + убиваются сессии на трминальных серверах, где 1Ска.

в целом все =)
Ура. Теперь HR делает дважды одну работу. В кадровой системе, а затем на портале :)
не делает, после HRа, все вносится уже бухами дальше ( можно подзапариться и вносить сразу в ЗУП ( через API )).
Но бухи занимаются бухгалтерией.
HR занимается рекрутингом, онбоардингом и прочими связанными с сотрудниками общеорганизационными процессами.
Кадровики занимаются работой в ЗУП и учетом рабочего времени, т.е. всем делопроизводством связанным с ТК.

У вас что именно то? :)

можно подзапариться и вносить сразу в ЗУП ( через API )
Можно, но зачем если кадровик так и так внесет сотрудника в ЗуП? Или если это сделает ИТшнек и в ЗуП залетит через API это будет более лофтово? А ИНН, снилсы и прочую персоналку типа паспортных данных Вы тоже туда заносите?
да я даже не знаю, что туда вносят =) вот реально.
Я просто хотел себя освободить от рутины создания юзера в AD\1C, сделал такой портал и все. Это работает. Задача выполнена.
и наверное главная ремарка, у нас не штата как в сабже, то есть у меня речь о «до 100 сотрудников».

Ну ладно вам, писать портал для 100 сотрудников? 100 УЗ набиваются одним человеком за 2-4 дня в зависмости от мотивации. Портал ради портала и строчки в резюме, это да

1) Не ради строчки в резюме, а ради личного интереса и личной лени. Не хотел я этим заниматься.
2) 2-4 дня и 100 сотрудников, разово да, но сотрудники имеют свойство увольняться и устраиваться… Поэтому работа постоянная.
3) И если это можно сделать, то почему бы и не сделать?
В случае с группой компаний не получится использовать данные ЗУП в полном объеме, т.к., например, гендир одного из юрлиц по факту может являться по факту руководителем одного из подразделений.
У вас «не» лишняя. В группе компаний наличие этой информации становится еще более важным.

Можно добавить интеграцию в кадровую систему. Но лично я бы давал страничку регистрации пользователю и пусть он сам всё вносит. Потом просто сверка бумаги с внесёнными данными и одна кнопка "готово".

Ну бред же. Уборщицы и бабушки диспетчеры будут очень рады и с этой радостью придут к вам, что бы вы показали им как это делается.

Эйчары или кадровики могут помочь внести таким сотрудникам данные. Так что ко мне не придут.

Впервые заметил такую практику еще в 2002 году :)
Сам делаю это более 10 лет (для учреждений образования). Начиналось с подобного csv, которое позже превратилось в программку на Делфи, генерирующую DSADD и прочее (создать каталоги пользователей, поставить права).

При автотранслитерации ФИО в логины латиницей (Иван Иванов -> iivanov) главное не забывать проверять результат на содержание неблагозвучных вариаций, например «eb», «fuck» в готовом логине.
И проверки на уже существующие логины — обязательны (много раз случалось).
«eb», «fuck» в готовом логине.
и прочее в готовом логине обычно лечится разделителем "_", снижение повторяемости логинов — введением кодов подразделений или табельных намеров и iivanov превращается в прекрасно читаемый 1234_ivanov_i_i
HRMS --> FIM 2016 (или аналог) --> AD, IT services security groups, ESB с WEB-API
На масштабах от 5000+ без этого уже нереально процессы рабочие получить.
Автор по нолику не приписал к своим реалиям? ))
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории