У меня есть функция, которая возвращает выбранное значение, кроме случаев, когда приглашение закрыто. Функция:Powershell - отключение захвата на входе
function Read-Choice {
#.Synopsis
# Prompt the user for a choice, and return the (0-based) index of the selected item
#.Parameter Message
# The question to ask
#.Parameter Choices
# An array of strings representing the "menu" items, with optional ampersands (&) in them to mark (unique) characters to be used to select each item
#.Parameter DefaultChoice
# The (0-based) index of the menu item to select by default (defaults to zero).
#.Parameter Title
# An additional caption that can be displayed (usually above the Message) as part of the prompt
#.Example
# Read-Choice "WEBPAGE BUILDER MENU" "Create Webpage","View HTML code","Publish Webpage","Remove Webpage","E&xit"
PARAM([string]$message, [string[]]$choices, [int]$defaultChoice=0, [string]$Title=$null)
if($choices[0].IndexOf('&') -lt 0) {
$i = 0;
$choices = $choices | ForEach-Object {
if($_ -notmatch '&.') { "&$i $_" } else { $_ }
$i++
}
}
$Host.UI.PromptForChoice($Title, $message, [Management.Automation.Host.ChoiceDescription[]]$choices, $defaultChoice)
}
Я звоню его следующим образом:
$SetDeletes = read-choice "Delete Files" "Recycle","Kill","E&xit" 0 $message
пользователю предлагается с выбором 0 Переработка, 1 убийство или выход. Если один из этих трех выбран и пользователь нажимает «ОК», он возвращает любое значение (0,1 или 2). Однако, если приглашение закрыто, или если пользователь нажимает отменить, сценарий прерывается с сообщением следующим образом:
Исключения вызова «PromptForChoice» с «4» аргументом (ы): «Ошибка в типа «System.Management.Automation.Host .PromptingException» имеет . »
Как можно отменить кнопку Отмена в подсказке и обработать ее? Если выбор не сделан, я хочу по умолчанию использовать значение 0, - Переработать и продолжить.
Спасибо!
Работы до совершенства. Я на V2. Большое спасибо! –