Вимкніть звуковий сигнал PowerShell на задній області


82

Ця функція, здається, була додана у версії 5.1 PowerShell, оскільки я не знаходжу її на своєму ноутбуці, який все ще працює 5.0.

Якщо натиснути Backspaceв PowerShell, він видасть звуковий сигнал, якщо немає (більше) тексту для видалення. Це дуже дратує, якщо ви випадково утримуєте клавішу занадто довго, оскільки звук буде тривати ненадовго після відпуску.

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

Як відключити звук "звуковий сигнал у зворотному просторі", не вимкнувши звукових сигналів повністю?


7
Set-PSReadlineOption -BellStyle None
PetSerAl

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 ні - так само, як і в Bash / ZSH або будь-якій оболонці Unix.
Tamoghna Chowdhury

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

2

Я подав цей елемент Github проти PsReadLine, оскільки не впевнений, що ця зміна була навмисною - https://github.com/lzybkr/PSReadLine/isissue/422


1
Це не дає відповіді на питання, і його слід було розмістити як коментар. Невідповіді підлягають видаленню.
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надавати собі пільги. Я не пам'ятаю свій кореневий пароль, тому не можу підтвердити це.
Еван Росіца

Дякую, але 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.