web-dev-qa-db-fra.com

Désactiver le bip PowerShell dans le retour arrière

Cette fonctionnalité semble avoir été ajoutée à PowerShell version 5.1, car je ne la trouve pas encore sur mon ordinateur portable fonctionnant sous la version 5.0.

En appuyant sur Backspace dans PowerShell, il émettra un bip sonore s'il n'y a plus de texte à supprimer. C’est assez gênant si vous maintenez accidentellement la touche enfoncée trop longtemps, car le son continuera pendant un court instant après que vous l’ayez relâchée.

J'ai trouvé this Une question de super utilisateur qui suggère de désactiver le service Beep, ce qui fonctionne, mais j'aimerais quand même pouvoir utiliser des bips dans les scripts.

Comment désactiver le son "bip sur retour arrière" sans désactiver complètement les bips?

79
FastEthernet

Le bip est fourni par le module PSReadline, fourni avec Windows 10. Vous devez modifier l'option PSReadline pour désactiver la cloche:

Set-PSReadlineOption -BellStyle None

Si vous souhaitez ce changement pour toutes les sessions PowerShell futures, vous devez ajouter cette commande à votre profil PowerShell . Par exemple, pour définir l'option "Utilisateur actuel, hôte actuel" ($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"

La première ligne permet à votre profil d’exécuter un script de démarrage à l’ouverture de PowerShell ( À propos des politiques d’exécution ). La deuxième ligne teste si un script de démarrage a déjà été défini pour "Utilisateur actuel, hôte actuel". La troisième ligne ajoute l'option bell à votre script de démarrage.

107
PetSerAl

Une solution plus permanente qui étend la réponse de @PetSerAl :

  1. Exécutez PowerShell en tant qu'administrateur.
  2. Exécuter: set-executionpolicy remotesigned. Cela permettra aux scripts PowerShell de s'exécuter sur votre ordinateur. Si vous n'êtes pas sûr de ce que c'est, ne continuez pas.
  3. Allez à C:\Windows\System32\WindowsPowerShell\v1.0 si vous êtes sur Windows 10.
  4. Créez un fichier nommé Microsoft.PowerShell_profile.ps1.
  5. Éditez ce fichier et ajoutez Set-PSReadlineOption -BellStyle None.
  6. Ouvrez une nouvelle console PowerShell et vous ne devriez plus entendre le bip.

Toutes les (nouvelles) consoles PowerShell de tous les utilisateurs de votre ordinateur sont désormais silencieuses.

Cette réponse concerne Windows 10. Pour les autres versions de Windows, le dossier peut être différent.

20
Odys

Une adaptation de la réponse de @Odys à l'aide du shell Bash sur le sous-système Windows pour Linux (à condition que cette option soit activée).

1 Ouvrez une invite de commande en tant qu'administrateur et exécutez

set-executionpolicy remotesigned

2 Tapez bash pour démarrer le shell bash

3 Accédez au répertoire approprié

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

4 Créez un fichier nommé "Microsoft.Powershell_profile.ps1" et écrivez-lui "Set-PSReadlineOption -BellStyle None".

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

J'ai classé cet élément Github contre PsReadLine, car je ne suis pas sûr que ce changement était intentionnel - https://github.com/lzybkr/PSReadLine/issues/422

1
Craig