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

82

Cette fonctionnalité semble avoir été ajoutée à PowerShell version 5.1, car elle ne fonctionne toujours pas sur mon ordinateur portable 5.0.

Lorsque vous appuyez Backspacesur 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é cette question sur le 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?

FastEthernet
la source
7
Set-PSReadlineOption -BellStyle None
user364455
1
@PetSerAl Cela fonctionne, mais je dois le définir chaque fois que j'ouvre une nouvelle fenêtre PowerShell. Y a-t-il un moyen de faire tenir le réglage?
FastEthernet
2
@FastEthernet Ajoutez-le à votre fichier de profil PowerShell
DavidPostill
1
@PetSerAl S'il vous plaît poster une réponse.
FastEthernet

Réponses:

112

Le bip est fourni par le PSReadlinemodule fourni avec Windows 10. Vous devez modifier l' PSReadlineoption pour désactiver la sonnerie:

Set-PSReadlineOption -BellStyle None

Si vous souhaitez cette modification 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 lors de l’ouverture de PowerShell ( À propos des stratégies 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.

utilisateur364455
la source
5
@Odys no - c'est la même chose que vous devriez le faire dans Bash / ZSH ou n'importe quel shell Unix.
Tamoghna Chowdhury le
21

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.0si vous êtes sur Windows 10.
  4. Créez un fichier nommé Microsoft.PowerShell_profile.ps1.
  5. Éditez ce fichier et ajoutez-le 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 différer.

Odys
la source
Set-ExecutionPolicypeut nécessiter des autorisations élevées. Par conséquent, si vous souhaitez modifier ce paramètre pour votre propre utilisateur uniquement, vous pouvez l’utiliser avec un -Scope CurrentUserargument.
mehmetseckin
1

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

Craig
la source
2
Cela ne fournit pas de réponse à la question et aurait dû être posté en tant que commentaire. Les non-réponses sont sujettes à suppression.
G-Man
1

Une adaptation de la réponse de @Odys à l'aide du shell Bash du 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 bashpour 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
Evan Rosica
la source
Je ne peux pas ajouter de fichier sous le chemin indiqué, ce qui n'est pas étonnant, car les droits d'accès au dossier n'incluent pas l'écriture. J'ai essayé de modifier les droits d'accès, mais pas de chance. Avez-vous rencontré un problème comme celui-ci?
lulijeta
essayez sudo chmod 644 ./Microsoft.Powershell_profile.ps1de vous donner des privilèges. Je ne me souviens pas de mon mot de passe root, je ne peux donc pas confirmer que cela fonctionne.
Evan Rosica
Merci, mais chmod ne peut tenter de modifier les autorisations d'accès aux fichiers que si le fichier existe. Mon problème est que je ne peux pas créer Microsoft.Powershell_profile.ps1 sous le dossier v1.0. La v1.0 (dossier) ne dispose pas du droit d'accès pour écrire dessus. Par conséquent, je ne peux pas créer de fichier dans ce dossier. J'ai essayé de modifier les droits d'accès de la version 1.0, mais apparemment, chmod a quelques problèmes avec le sous-système. Comment avez-vous réussi à créer un fichier sous v1.0?
lulijeta