Public/Get-UserProvisioningSamAccountName.ps1
|
function Get-UserProvisioningSamAccountName { [CmdletBinding()] param ( [string] $givenName, [string] $sn ) process { $givenName = $givenName.ToLower().Replace("æ", "ae").Replace("ø", "o").Replace("å", "a") -replace "[^a-z]", "" $sn = $sn.ToLower().Replace("æ", "ae").Replace("ø", "o").Replace("å", "a") -replace "[^a-z]", "" $sams = [ordered]@{} $Script:SamAccountNameGenerationPatterns | ForEach-Object { $s = $_ $s = [regex]::Replace( $s, "{givenName:(\d+)}", { param($m) $givenName.Substring(0, [math]::Min($givenName.Length, [int]$m.Groups[1].Value)) } ) $s = [regex]::Replace( $s, "{sn:(\d+)}", { param($m) $sn.Substring(0, [math]::Min($sn.Length, [int]$m.Groups[1].Value)) } ) $s = $s.Replace("{random:2}", (Get-Random -Minimum 10 -Maximum 99).ToString()).Replace("{random:3}", (Get-Random -Minimum 100 -Maximum 999).ToString()).Replace("{random:4}", (Get-Random -Minimum 1000 -Maximum 9999).ToString()).Replace("{random:5}", (Get-Random -Minimum 10000 -Maximum 99999).ToString()).Replace("{random:6}", (Get-Random -Minimum 100000 -Maximum 999999).ToString()).Replace("{random:7}", (Get-Random -Minimum 1000000 -Maximum 9999999).ToString()).Replace("{random:8}", (Get-Random -Minimum 10000000 -Maximum 99999999).ToString()).Replace("{random:9}", (Get-Random -Minimum 100000000 -Maximum 999999999).ToString()).Replace("{random}", (Get-Random -Minimum 2 -Maximum 9).ToString()).Replace("{random:1}", (Get-Random -Minimum 2 -Maximum 9).ToString()) $sams[$s] = $s } $sams.Values } } |