Functions/ConvertTo-DryADCase.ps1
Function ConvertTo-DryADCase { [CmdletBinding()] Param ( [Parameter(Mandatory)] [AllowEmptyString()] [String]$Name, [ValidateSet('upper','lower','ignore','capitalized','capitalize')] [Parameter(Mandatory)] [String]$Case ) If ($Case -eq 'capitalize') { $Case = 'capitalized' } ol d @("Converting '$Name' to type","$Case") Function PRIVATE:Capitalize { [CmdletBinding()] Param ( [Parameter(Mandatory)] [AllowEmptyString()] [String]$Name ) $Name = $Name.Trim() If ($Name.length -le 1) { Return $Name.ToUppper() } ElseIf ($Name -match ' ') { $Parts = $Name.split(' ') [String]$AccumulatedParts = '' ForEach ($Part in $Parts) { $UpperCasePart = ($Part.SubString(0,1)).ToUpper() $LowerCasePart = ($Part.Substring(1,($Part.length-1))).ToLower() $AccumulatedParts += $UpperCasePart + $LowerCasePart + ' ' } Return $AccumulatedParts.Trim() } Else { $UpperCasePart = ($Name.SubString(0,1)).ToUpper() $LowerCasePart = ($Name.Substring(1,($Name.length-1))).ToLower() $ReturnString = $UpperCasePart + $LowerCasePart Return $ReturnString } } Switch ($Case) { 'ignore' { $ReturnValue = $Name } 'upper' { $ReturnValue = $Name.ToUpper() } 'lower' { $ReturnValue = $Name.ToLower() } 'capitalized' { # If distinguishedname, $Name is split into parts. First letter of each part is capitalized If (($Name -match "OU=") -or ($Name -match "CN=") -or ($Name -match "DC=") ) { [String]$AccumulatedStringValue = '' $NameParts = @($Name.Split(',')) ForEach ($Part in $NameParts) { # The first three letters are part of # delimiter, 'OU=', 'CN=' or 'DC=' $Delimter = $Part.SubString(0,3) $Namepart = $Part.SubString(3,($Part.length-3)) $Namepart = Capitalize -name $NamePart # put into $AccumulatedStringValue $AccumulatedStringValue += ($delimter + $Namepart + ',') } $ReturnValue = $AccumulatedStringValue.TrimEnd(',') } Else { If ($Name.length -le 1) { $ReturnValue = $Name.ToUpper() } Else { $ReturnValue = Capitalize -name $Name } } } } ol d @('Converted to',"$ReturnValue") $ReturnValue } |