Deaktivieren Sie den PowerShell-Piepton bei der Rücktaste

82

Diese Funktion wurde anscheinend in PowerShell Version 5.1 hinzugefügt, da ich sie auf meinem Laptop, auf dem noch 5.0 ausgeführt wird, nicht finde.

Wenn Sie Backspacein PowerShell drücken , ertönt ein Piepton, wenn kein (mehr) zu löschender Text vorhanden ist. Dies ist sehr ärgerlich, wenn Sie die Taste versehentlich zu lange gedrückt halten, da der Ton nach dem Loslassen noch einige Zeit anhält.

Ich habe diese Super-User-Frage gefunden, die vorschlägt, den Beep-Dienst zu deaktivieren, was funktioniert, aber ich möchte weiterhin in der Lage sein, Beeps in Skripten zu verwenden.

Wie deaktiviere ich den Ton "Beep on Backspace", ohne die Signaltöne vollständig zu deaktivieren?

Schnelles Ethernet
quelle
7
Set-PSReadlineOption -BellStyle None
user364455
1
@PetSerAl Das funktioniert, aber ich muss es jedes Mal einstellen, wenn ich ein neues PowerShell-Fenster öffne. Gibt es eine Möglichkeit, das Setting Stick zu machen?
FastEthernet
2
@FastEthernet Fügen Sie es zu Ihrer PowerShell-
Profildatei hinzu
1
@ PetSerAl Bitte geben Sie eine Antwort.
FastEthernet

Antworten:

112

Der Signalton wird von dem PSReadlinemit Windows 10 gelieferten Modul ausgegeben. Sie müssen die PSReadlineOption zum Deaktivieren der Klingel ändern :

Set-PSReadlineOption -BellStyle None

Wenn Sie diese Änderung für alle zukünftigen PowerShell-Sitzungen wünschen, müssen Sie diesen Befehl Ihrem PowerShell-Profil hinzufügen . So legen Sie beispielsweise die Option für "Aktueller Benutzer, Aktueller Host" ( $Profile) fest:

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"

In der ersten Zeile kann Ihr Profil ein Startskript ausführen, wenn PowerShell geöffnet wird ( Informationen zu Ausführungsrichtlinien ). In der zweiten Zeile wird geprüft, ob bereits ein Startskript für "Aktueller Benutzer, Aktueller Host" definiert ist. In der dritten Zeile wird Ihrem Startskript die Option bell hinzugefügt.

user364455
quelle
5
@Odys nein - so müssten Sie es auch in Bash / ZSH oder einer anderen Unix-Shell machen.
Tamoghna Chowdhury
21

Eine dauerhaftere Lösung, die die Antwort von @PetSerAl erweitert :

  1. Führen Sie PowerShell als Administrator aus.
  2. Execute: set-executionpolicy remotesigned. Dadurch können PowerShell-Skripts auf Ihrem Computer ausgeführt werden. Wenn Sie nicht sicher sind, was das ist, fahren Sie nicht fort.
  3. Gehen Sie zu, C:\Windows\System32\WindowsPowerShell\v1.0wenn Sie unter Windows 10 arbeiten.
  4. Erstellen Sie eine Datei mit dem Namen Microsoft.PowerShell_profile.ps1.
  5. Bearbeiten Sie diese Datei und fügen Sie sie hinzu Set-PSReadlineOption -BellStyle None.
  6. Öffnen Sie eine neue PowerShell-Konsole, und Sie sollten den Signalton nicht mehr hören.

Alle (neuen) PowerShell-Konsolen für alle Benutzer auf Ihrem Computer sind jetzt still.

Diese Antwort gilt für Windows 10. Bei anderen Windows-Versionen kann der Ordner abweichen.

Odys
quelle
Set-ExecutionPolicyMöglicherweise sind erhöhte Berechtigungen erforderlich. Wenn Sie diese Einstellung also nur für Ihren eigenen Benutzer ändern möchten, können Sie sie mit -Scope CurrentUserArgument verwenden.
Mehmetseckin
1

Ich habe diesen Github-Artikel gegen PsReadLine eingereicht, da ich nicht sicher bin, ob diese Änderung beabsichtigt war - https://github.com/lzybkr/PSReadLine/issues/422

Craig
quelle
2
Dies ist keine Antwort auf die Frage und hätte als Kommentar veröffentlicht werden müssen. Nicht beantwortete Fragen können gelöscht werden.
G-Man
1

Eine Anpassung der Antwort von @Odys mithilfe der Bash-Shell auf dem Windows-Subsystem für Linux (vorausgesetzt, Sie haben sie aktiviert).

1 Öffnen Sie als Administrator eine Eingabeaufforderung und führen Sie sie aus

set-executionpolicy remotesigned

2 Geben Sie ein bash, um die Bash-Shell zu starten

3 Wechseln Sie in das richtige Verzeichnis

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

4 Erstellen Sie eine Datei mit dem Namen "Microsoft.Powershell_profile.ps1" und schreiben Sie "Set-PSReadlineOption -BellStyle None" darauf

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
Evan Rosica
quelle
Ich kann keine Datei unter dem angegebenen Pfad hinzufügen, was nicht verwunderlich ist, da die Zugriffsrechte auf den Ordner keine Schreibrechte enthalten. Ich habe versucht, die Zugriffsrechte zu ändern, aber kein Glück. Hast du ein Problem wie dieses?
Lulijeta
versuche sudo chmod 644 ./Microsoft.Powershell_profile.ps1dir Privilegien zu verschaffen. Ich erinnere mich nicht an mein root-Passwort, daher kann ich nicht bestätigen, dass dies funktioniert.
Evan Rosica
Vielen Dank, aber chmod kann nur versuchen, die Dateizugriffsberechtigungen zu ändern, wenn die Datei vorhanden ist. Mein Problem ist, dass ich Microsoft.Powershell_profile.ps1 unter dem Ordner v1.0 nicht erstellen kann. In v1.0 (Ordner) fehlt das Zugriffsrecht zum Schreiben, daher kann ich keine Datei in diesem Ordner erstellen. Ich habe versucht, die Zugriffsrechte von v1.0 zu ändern, aber anscheinend hat chmod einige Probleme mit dem Subsystem. Wie haben Sie es geschafft, eine Datei unter v1.0 zu erstellen?
Lulijeta