Если это поможет, я нахожусь на PowerShell Core, v.6.0.1 или v.6.1.0.Очевидно, что в некоторых версиях PowerShell синтаксический анализ -1 приводит к ошибке, но не в любой из моих систем.На самом деле, я могу получить «действительный» ConsoleColor с любым отрицательным числом.Я просто пытаюсь понять, почему это работает, и что это значит.
Я играю с помощью скрипта PowerShell, который позволяет выбирать из меню параметров с помощью клавиш со стрелками: здесь, обсуждалось в этом вопросе .
Я заметил, что код скрипта пытается использовать текущие значения [Console]::BackgroundColor
и [Console]::ForegroundColor
, но в моем сеансе PowerShell эти значениявозвращаются как -1, что не может быть использовано для их установки.
Я изменил скрипт, чтобы переопределить значения некоторыми цветами по своему выбору, если они еще не настроены, но затем яхотел также иметь возможность их сброса.[Консоль] :: ResetColor () сбрасывает цвета фона и переднего плана, поэтому я не могу использовать его, если один из них настроен, а другой нет.
Однако это работает:
[Console]::ForegroundColor = [Enum]::Parse([ConsoleColor], -1)
На самом деле я обнаружил, что могу создавать резервные копии исходных цветов и назначать их обратно без проблем, так что теперь я просто задаюсь вопросом о поведении этого перечисления в целом.
Почемувышеуказанная работа, но не [Console]::ForegroundColor = -1
?