Complex Password Generator

Function Get-RandomPassword {
     param(
         $length = 10,
         $characters = 'abcdefghkmnprstuvwxyzABCDEFGHKLMNPRSTUVWXYZ123456789!"??$%&/()=?*+#_'
     )
     $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
     $private:ofs=""
     [String]$characters[$random]
 }
 Function Randomize-Text {
     param(
         $text
     )
     $number = $text.length -1
     $indexes = Get-Random -InputObject (0..$number) -Count $number
     $private:ofs=''
     [String]$text[$indexes]
 }
 Function Get-ComplexPassword {
     $password = Get-RandomPassword -length 8 -characters 'abcdefghiklmnprstuvwxyz'
     $password += Get-RandomPassword -length 2 -characters '#*+)'
     $password += Get-RandomPassword -length 4 -characters '123456789'
     $password += Get-RandomPassword -length 6 -characters 'ABCDEFGHKLMNPRSTUVWXYZ'
     Randomize-Text $password
 }
 Get-ComplexPassword