Что-то типа того ?
function ShowMenu([array]$Menu, [int]$Default)
{
$minY = [Console]::CursorTop
$y = [Math]::Max([Math]::Min($Default, $Menu.Count), 0)
do {
[Console]::CursorTop = $minY
[Console]::CursorLeft = 0
$i = 0
foreach ($item in $Menu) {
$colors = @{
BackgroundColor = if ($i -ne $y) { [Console]::BackgroundColor } else { 'Cyan' }
ForegroundColor = if ($i -ne $y) { [Console]::ForegroundColor } else {' Blue' }
}
Write-Host (' {0}. {1} ' -f ($i+1), $item) @colors
$i++
}
$k = [Console]::ReadKey()
switch ($k.Key) {
'UpArrow' { if ($y -gt 0) { $y-- } }
'DownArrow' { if ($y -lt ($menu.Count - 1)) { $y++ } }
'Enter' { return $Menu[$y] }
}
} while ($k.Key -notin ([ConsoleKey]::Escape, [ConsoleKey]::Enter))
}
$Menu = 'test1','text2','menu3','result4'
ShowMenu $menu 2
Реакцию на другие кнопочки можно доработать по вкусу