Я пытаюсь написать функцию PS, которая принимает FirstName
и LastName
в качестве параметров и возвращает samaccountname
.Вот алгоритм работы этой функции.
Имя: Ричард Тестирование
Теперь посмотрите, не принят ли логин richard
.Если взято richard
, попробуйте richard.t
.Если взято richard.t
, попробуйте richard.te
.Если взято richard.te
, попробуйте richard.tes
и т. Д.
Ниже приведен мой код.Я думаю, что это можно сделать гораздо проще, чем с помощью циклов if.
$FirstName = "Richard"
$LastName = "Testing"
function Remove-StringLatinCharacters {
Param([string]$String)
[Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($String))
}
$FirstnameToUPN = (Remove-StringLatinCharacters -String $firstname).ToLower()
$LastnamenameToUPN = (Remove-StringLatinCharacters -String $lastname).ToLower()
$user = $(try {Get-ADUser $FirstnameToUPN} catch {$null})
if ($user -ne $null) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]
$user = $(try {Get-ADUser $upn} catch {$null})
if ($user -ne $null) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]
$user = $(try {Get-ADUser $upn} catch {$null})
if ($user -ne $null) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]
$user = $(try {Get-ADUser $upn} catch {$null})
if ($user -ne $null) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]
}
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]
}
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]
}
} else {
$upn=$FirstnameToUPN
}
Edit # 1:
$upn = $FirstnameToUPN
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN+"."+$LastnamenameToUPN[0]
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]+$LastnamenameToUPN[4]
if (Get-Aduser -Filter {SamAccountName -eq $upn}) {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]+$LastnamenameToUPN[4]+$LastnamenameToUPN[5]
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]+$LastnamenameToUPN[4]
}
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]
}
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]+$LastnamenameToUPN[2]+$LastnamenameToUPN[3]
}
} else {
$upn = $FirstnameToUPN + "." + $LastnamenameToUPN[0]+$LastnamenameToUPN[1]
}
} else {
$upn = $FirstnameToUPN+"."+$LastnamenameToUPN[0]
}
} else {
$upn = $FirstnameToUPN
}