function permutation ($array) { function generate($n, $array, $A) { if($n -eq 1) { $array[$A] -join ' ' } else{ for( $i = 0; $i -lt ($n - 1); $i += 1) { generate ($n - 1) $array $A if($n % 2 -eq 0){ $i1, $i2 = $i, ($n-1) $A[$i1], $A[$i2] = $A[$i2], $A[$i1] } else{ $i1, $i2 = 0, ($n-1) $A[$i1], $A[$i2] = $A[$i2], $A[$i1] } } generate ($n - 1) $array $A } } $n = $array.Count if($n -gt 0) { (generate $n $array (0..($n-1))) } else {$array} } permutation @('A','B','C')