Functions/Format-RandomCase.ps1
function Format-RandomCase { <# .SYNOPSIS Formats a string character by character randomly into upper or lower case. .DESCRIPTION Formats a string character by character randomly into upper or lower case. .PARAMETER String A [string[]] that you want formatted randomly into upper or lower case .PARAMETER IncludeInput Switch that will display input parameters in the output .EXAMPLE Format-RandomCase -String 'HELLO WORLD IT IS ME!' Example return HelLo worlD It is me! .EXAMPLE Format-RandomCase -String HELLO, WORLD, IT, IS, ME -IncludeInput Example return Original Return -------- ------ HELLO hELLo WORLD wORLd IT It IS is ME ME .OUTPUTS [string[]] #> # todo Change += to System.Collections.Arraylist [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments','')] param ( [parameter(ValueFromPipeline)] [string[]] $String, [switch] $IncludeInput ) begin { Write-Verbose -Message "Starting [$($MyInvocation.Mycommand)]" } process { foreach ($CurrentString in $String) { $CharArray = [char[]] $CurrentString $CharArray | ForEach-Object -Begin { $ReturnVal = '' } -Process { $Random = 0,1 | Get-Random if ($Random -eq 0) { $ReturnVal += ([string] $_).ToLower() } else { $ReturnVal += ([string] $_).ToUpper() } } if ($IncludeInput) { New-Object -TypeName psobject -Property ([ordered] @{ Original = $CurrentString Return = $ReturnVal }) } else { Write-Output -InputObject $ReturnVal } } } end { Write-Verbose -Message "Ending [$($MyInvocation.Mycommand)]" } } |