Використання транслітерації в PowerShell при створенні користувачів.
Транслітерація або трансліт - це написання тексту на одній мові з допомогою символів іншої мови, наприклад написання російських слів латинськими буквами. Транслітерація може грунтуватися на схожості звучання (ч → ch, ш → sh, ю → yu) або візуальному схожості символів (ш → w, ч → 4, и → bl).
Транслітерація може використовуватися при масовому створенні облікових записів в Active Directory. Наприклад, ми отримуємо список користувачів виду Іванов Іван Іванович, з якого повинні створити облікові записи виду ivanov_ii.
Для генерації користувачів з текстового файлу я написав ось такий скрипт.Він забирає список користувачів з зазначеного текстового файлу і створює для них облікові записи.
[CmdletBinding ()]
param (
[Parameter (Mandatory = $ true)]
[string] $ inFile
)
# Отримуємо список користувачів з зовнішнього файлу
$ Users = Get-Content $ inFile;
# Функція транслітерації
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]' е '= "e"
[char]' е '= "e"
[char] 'ж' = "zh"
[char] 'ж' = "zh"
[char] 'з' = "z"
[char] 'з' = "z"
[char] 'і' = "i"
[char] 'і' = "i"
[char] 'ї' = "y"
[char] 'Ї' = "y"
[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] 'х' = "kh"
[char] 'х' = "kh"
[char] 'ц' = "ts"
[char] 'Ц' = "ts"
[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 "
[char] '' =" "# пробіл
}
$ outString =" " ;
$ chars = $ inString.ToCharArray ();
foreach ($ char in $ chars) {$ outString + = $ Translit [$ char]}
return $ outString;
}
# створення облікового запису
foreach ($ user in $ users) {
$ UserFullName = $ user;
$ UserLastName = $ UserFullName.Split ( " ") [0];
$ UserFirstName = $ UserFullName.Split (" ") [1];
$ UserInitials = $ UserFullName.Split (" ") [2] [0];
$ UserFullNameEN = Translit ($ UserFullName);
$ UserLastNameEN = $ UserFullNameEN.Split ( "") [0];
$ UserInitialsEN = "_" + $ UserFullNameEN.Split ( "") [1] [0] + $ UserFullNameEN.Split ( "") [2] [0];
$ UserLogin = $ UserLastNameEN + $ UserInitialsEN;
$ UserPrincipalname = $ UserLogin + "@ test.local"; # Test.local - ім'я тестового домену
$ UserPassword = ConvertTo-SecureString 'P @ $$ w0rd' -AsPlainText -Force;
New-AdUser -Name $ UserFullName -SamAccountName $ UserLogin -DisplayName $ UserFullName `
-GivenName $ UserFirstName -Surname $ UserLastName -Initials $ UserInitials`
-UserPrincipalName $ UserPrincipalname -Enabled $ True `
-ChangePasswordAtLogon $ true -AccountPassword $ UserPassword - passThru;
}
Працює так - запускаємо скрипт і вказуємо йому в якості параметра текстовий файл зі списком користувачів, наприклад:
.\ GenerateUsers -inFile users.txt
В результаті отримуємо щось на зразок цього