I would like your opinion of my PowerShell function. Does it follow conventions, and what could can I do to improve it. It is made to create LDAP friendly username from a full name in Serbian language.
function Get-UsernameFromFullName
{
[CmdletBinding()]
param
(
[Parameter(Position = 0, Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[string]
$FullName,
[Parameter(Position = 1, Mandatory = $false, ValueFromPipelineByPropertyName = $true)]
[ValidateSet('First', 'Last')]
[string]
$LastNamePosition = 'First'
)
$usernameComponents = $FullName.ToLower().Split(" ")
switch ($LastNamePosition)
{
'First' { $firstName = $usernameComponents.Length -1; $lastName = 0 }
'Last' { $firstName = 0; $lastName = $usernameComponents.Length -1 }
Default { $firstName = $usernameComponents.Length -1; $lastName = 0 }
}
$chars = ($usernameComponents.Get($firstName) + "." + $usernameComponents.Get($lastName)).ToCharArray()
foreach($char in $chars)
{
switch($char)
{
'ć' { $segment = "c" }
'č' { $segment = "c" }
'đ' { $segment = "dj" }
'š' { $segment = "s" }
'ž' { $segment = "z" }
default { $segment = $char }
}
$Username += $segment
}
return $Username
}
Here is a link to GitHub page of the actual .psm1
file.
This is an example of the function usage:
Get-UsernameFromFullName -FullName "Čedomir Đorđević"
cedomir.djordjevic
Get-UsernameFromFullName -FullName "JANKOV ZORAN"
zoran.jankov
Get-UsernameFromFullName -FullName "Stojić Gradimir"
gradimir.stojic
Get-UsernameFromFullName -FullName "Vučićević R Željko"
zeljko.vucicevic
Get-UsernameFromFullName -FullName "Magda Boškić" -LastNamePosition Last
magda.boskic