Вместо нескольких отдельных сравнений, просто сортируя три значения и выбирая второй элемент, вы сразу получите медиану.Но я подозреваю, что на самом деле все портит результаты: Read-Host
возвращает строки, когда вам нужно, чтобы они были числовыми значениями.Порядок сортировки строк ("1" <"20" <"3") отличается от порядка сортировки чисел (1 <3 <20), поскольку сравниваются символы в соответствующих позициях, а не целое число. </p>
Преобразование введенных значений в целые числа (или удвоения, если вы ожидаете числа с плавающей запятой) должно решить проблему:
if ($response -eq 1) {
[int]$a = Read-Host 'Enter a number'
[int]$b = Read-Host 'Enter a second number'
[int]$c = Read-Host 'Enter a third number'
$n = ($a, $b, $c | Sort-Object)[1]
Write-Host "$n is the median."
}