YuS 2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору farag 20-05-2020 Цитата: создается меню с буквами, но перемещаться нельзя. | Ссылками лучше не публиковать код, здесь топик, как раз, про такой код, так что лучше прямо здесь... мне, например, чтобы попасть на тот сайт, приходится tor запускать... В общем, массив тут не при чем. Там двойное ожидание ввода... перемещение будет по двойному нажатию. Как-то так: Код: function ShowMenu { param ( [Parameter(Mandatory = $true)] [string]$Title, [Parameter(Mandatory = $true)] [array]$Options, [Parameter(Mandatory = $true)] [int]$Default ) Write-Host $Title [console]::CursorVisible=$false $minY = [Console]::CursorTop $y = [Math]::Max([Math]::Min($Default, $Options.Count), 0) do { [Console]::CursorTop = $minY [Console]::CursorLeft = 0 $i = 0 foreach ($item in $Options) { $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++ } switch ($a = [Console]::ReadKey().Key) { "UpArrow" { if ($y -gt 0) { $y-- } } "DownArrow" { if ($y -lt ($Options.Count - 1)) { $y++ } } "Enter" { [console]::CursorVisible=$true return $Options[$y] } } } while ($a -notin ([ConsoleKey]::Escape, [ConsoleKey]::Enter)) } if ($RU) { $Title = "Выберите букву диска" } else { $Title = "Desktop" } #$Options = 'test1', 'text2', 'menu3', 'result4' $Options = [string[]](Get-Disk | Where-Object -FilterScript {$_.BusType -ne "USB"} | Get-Partition | Get-Volume | Where-Object -FilterScript {$null -ne $_.DriveLetter}).DriveLetter | Sort-Object ShowMenu -Title $Title -Options $Options -Default 2 [console]::CursorVisible=$true | Цитата: Конечно, нет: внешние жесткие диски пропустит иначе. | Почему? Например: - здесь H - внешний жесткий диск, на док-станции... и Ваш вариант, его, как раз, "не видит"... Добавлено: Adalon Цитата: но только 7-я версия не заменяет 5-ю, а дополняет. | Powershell Core 7.0 - самостоятельная версия, она ничего не дополняет. PS Core 7.0 умеет подгружать модули из версии 5.1, если какого-то функционала не хватает... Цитата: если бы 7-я заменяла бы старую, то я бы не задумываясь поставил бы сразу и забыл. | А если она работает самостоятельно, то ни за что на свете не установите? Понятно. | Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:19 20-05-2020 | Исправлено: YuS 2, 21:52 21-05-2020 |
|