Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:blog:powershell_fio_to_login

[POWERSHELL] Преобразование ФИО в имя пользователя

Довольно таки часто перед администратором домена встаёт вопрос оперативного введения большого количества пользователей в Active Directory. Собственно, данный powershell-скрипт демонстрирует как легко и непринужденно, всего за пару секунд, получить из текстового списка с ФИО сотрудников, лаконичный перечень логинов.

Содержание

Скрипт ни на что не претендует, сделал его просто чтобы был, оттачивать и развивать идеи пока нет. Однако он весьма нагляден и может послужить «болванкой».

  • ФИО должны находиться в файле names.txt в одной папке со скриптом
  • По завершении преобразования производиться проверка на наличие идентичных логинов (дубликатов), если таковые найдены появится предупреждение

Пример работы скрипта

fio_to_login.ps1
##################################################################################
### Скрипт для преобразования полных ФИО в имена пользователей (например для AD) #
### Информация о скрипте: wiki.soulruins.info                                    #
##################################################################################
function 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
 }
$users = Get-Content .\names.txt
Write-Host;
Write-Host "Вводные данные:" -ForegroundColor Gray
Write-Host;
$users
Write-Host;
Write-Host "Преобразованные данные:" -ForegroundColor Gray
Write-Host;
$surname = $users | % { $_.Split(' ')[0] }
$firstname = $users | % { $_.Split(' ')[1] }
$firstname = $firstname.substring(0,1)
$firstname = $firstname -replace "$","."
$firstname = $firstname.ToLower()
$surname = $surname.ToLower()
$users = $firstname | % {$count = 0} {$_ + $surname[$count] ; $count++}
$logins = $users | ForEach-Object {Translit($_)}
$logins
$duplicate = $logins | Group-Object | Where-Object {$_.Count -gt 1}
if ($duplicate) {
Write-Host;
Write-Host "ВНИМАНИЕ! " -ForegroundColor Red -NoNewline ; Write-Host "В массиве найдены совпадения:" -ForegroundColor Gray
$duplicate
}
Только авторизованные участники могут оставлять комментарии.
docs/blog/powershell_fio_to_login.txt · Последнее изменение: 15.04.2015 10:53 — philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki