在退格键上禁用PowerShell提示音


82

此功能似乎已在PowerShell版本5.1中添加,因为在仍运行5.0的笔记本电脑上找不到该功能。

Backspace在PowerShell中按下时,如果没有(更多)文本要删除,它将发出“哔”声。如果您不小心将按键按住得太久,这会很烦人,因为在您松开按键后声音会持续一会儿。

我发现了这个超级用户问题,问题建议禁用Beep服务,该服务确实有效,但是我仍然希望能够在脚本中使用蜂鸣声。

如何在不完全禁用蜂鸣声的情况下禁用“蜂鸣声”?


7
Set-PSReadlineOption -BellStyle None
PetSerAl

1
@PetSerAl可以,但是每次打开新的PowerShell窗口时都必须设置它。有什么方法可以固定设定值吗?
FastEthernet


2
@FastEthernet将其添加到您的PowerShell配置文件
DavidPostill

1
@PetSerAl请发布答案。
FastEthernet

Answers:


112

哔哔声由PSReadlineWindows 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打开时运行启动脚本(关于执行策略)。第二行测试是否已经为“当前用户,当前主机”定义了启动脚本。第三行将bell选项添加到启动脚本中。


5
@Odys否-这与您在Bash / ZSH或任何Unix Shell中必须执行的操作相同。
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控制台均处于静默状态。

该答案适用于Windows10。对于Windows的其他版本,文件夹可能有所不同。


Set-ExecutionPolicy可能需要提升的权限,因此,如果您只想为自己的用户更改此设置,则可以将其与-Scope CurrentUser参数一起使用。
mehmetseckin


1

使用Windows子系统(适用于Linux)上的Bash shell改编@Odys的答案(假设您已启用它)。

1以管理员身份打开命令提示符,然后运行

set-executionpolicy remotesigned

2键入bash以启动bash shell

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仅在文件存在的情况下才能尝试更改文件访问权限。我的问题是我无法在文件夹v1.0下创建Microsoft.Powershell_profile.ps1。v1.0(文件夹)缺少写权限,因此我无法在该文件夹下创建文件。我试图更改v1.0的访问权限,但显然chmod与子系统有关。您如何在v1.0下创建文件?
lulijeta
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.