75

Эта функция, кажется, была добавлена в PowerShell версии 5.1, так как я не вижу ее на моем ноутбуке, все еще работающем с 5.0.

При нажатии Backspace в PowerShell, он будет издавать звуковой сигнал, если нет (больше) текста для удаления. Это очень раздражает, если вы случайно удерживаете клавишу слишком долго, так как звук будет продолжать звучать в течение короткого времени после того, как вы отпустите ее.

Я нашел этот вопрос Super User, который предлагает отключить службу Beep, которая работает, но я хотел бы по-прежнему иметь возможность использовать звуковые сигналы в сценариях.

Как отключить звук "beep on backspace" без полного отключения звуковых сигналов?

4 ответа4

97

Звуковой сигнал предоставляется модулем PSReadline , который поставляется с Windows 10. Вам нужно изменить опцию PSReadline чтобы отключить звонок:

Set-PSReadlineOption -BellStyle None

Если вы хотите это изменение для всех будущих сеансов PowerShell, вам нужно добавить эту команду в свой профиль PowerShell. Например, чтобы установить параметр «Текущий пользователь, текущий хост» ($Profile):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
if (!(Test-Path -Path "$Profile")) {New-Item -ItemType File -Path "$Profile" -Force}
Add-Content -Value "Set-PSReadlineOption -BellStyle None" -Path "$Profile"

Первая строка позволяет вашему профилю запускать скрипт запуска при открытии PowerShell (О политиках выполнения). Во второй строке проверяется, есть ли у вас сценарий запуска, определенный для «Текущий пользователь, Текущий хост». Третья строка добавляет опцию звонка в ваш скрипт запуска.

19

Более постоянное решение, которое расширяет ответ @PetSerAl :

  1. Запустите PowerShell от имени администратора.
  2. Выполнить: set-executionpolicy remotesigned . Это позволит запускать сценарии PowerShell на вашем компьютере. Если вы не уверены, что это не продолжайте.
  3. Перейдите в C:\Windows\System32\WindowsPowerShell\v1.0 если вы используете Windows 10.
  4. Создайте файл с именем Microsoft.PowerShell_profile.ps1 .
  5. Отредактируйте этот файл и добавьте Set-PSReadlineOption -BellStyle None .
  6. Откройте новую консоль PowerShell, и вы больше не услышите звуковой сигнал.

Все (новые) консоли PowerShell для всех пользователей на вашем компьютере теперь молчат.

Этот ответ для Windows 10.  Для других версий Windows папка может отличаться.

1

Адаптация ответа @Odys с использованием оболочки Bash в подсистеме Windows для Linux (при условии, что она включена).

1 Откройте командную строку от имени администратора и запустите

set-executionpolicy remotesigned

2 Введите bash чтобы запустить оболочку bash

3 Перейдите в правильный каталог

cd /mnt/c/Windows/System32/WindowsPowerShell/v1.0 

4 Создайте файл с именем «Microsoft.Powershell_profile.ps1» и запишите в него «Set-PSReadlineOption -BellStyle None».

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
1

Я подал этот элемент Github на PsReadLine, так как не уверен, что это изменение было преднамеренным - https://github.com/lzybkr/PSReadLine/issues/422

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .