Отключить звуковой сигнал PowerShell для возврата


82

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

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

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

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


7
Set-PSReadlineOption -BellStyle None
user364455

1
@PetSerAl Это работает, но я должен устанавливать его каждый раз, когда открываю новое окно PowerShell. Есть ли способ сделать настройку флешкой?
FastEthernet


2
@FastEthernet Добавьте его в свой файл профиля PowerShell
DavidPostill

1
@PetSerAl Пожалуйста, оставьте ответ.
FastEthernet

Ответы:


112

Звуковой сигнал предоставляется 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 ( О политиках выполнения ). Во второй строке проверяется, есть ли у вас сценарий запуска, определенный для «Текущий пользователь, Текущий хост». Третья строка добавляет опцию звонка в ваш скрипт запуска.


5
@ Odys no - это то же самое, что и в Bash / ZSH или в любой оболочке Unix.
Тамогна Чаудхури

21

Более постоянное решение, которое расширяет ответ @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 папка может отличаться.


Set-ExecutionPolicyможет потребоваться повышенные разрешения, поэтому, если вы хотите изменить этот параметр только для вашего собственного пользователя, вы можете использовать его с -Scope CurrentUserаргументом.
mehmetseckin

1

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


2
Это не дает ответа на вопрос и должно быть опубликовано в качестве комментария. Не ответы подлежат удалению.
G-Man

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

Я не могу добавить файл по указанному пути, что неудивительно, потому что права доступа к папке не включают запись. Я пытался изменить права доступа, но не повезло. Вы сталкивались с такой проблемой?
Lulijeta

попытаться sudo chmod 644 ./Microsoft.Powershell_profile.ps1дать себе привилегии. Я не помню свой пароль root, поэтому я не могу подтвердить, что это работает.
Эван Росика

Спасибо, но chmod может пытаться изменить права доступа к файлам, только если файл существует. Моя проблема в том, что я не могу создать Microsoft.Powershell_profile.ps1 в папке v1.0. v1.0 (папка) не имеет права доступа для записи в нее, поэтому я не могу создать файл в этой папке. Я пытался изменить права доступа v1.0, но, видимо, chmod имеет некоторые проблемы с подсистемой. Как вам удалось создать файл под v1.0?
Lulijeta
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.