Wie entferne ich einen Standard-Powershell-Alias ​​dauerhaft?

22

Aus irgendeinem unbekannten Grund haben die Entwickler "curl" als Alias ​​für eingefügt Invoke-WebRequest, obwohl es nicht mit der korrekten Implementierung von curl kompatibel ist, was bedeutet, dass es im Weg steht, wenn ich versuche, eine Curl-Anfrage zu stellen. Ich kann den Alias ​​mithilfe von entfernen Remove-Item alias:curl, aber beim nächsten Start von Powershell ist der Alias ​​zurückgekehrt. Gibt es eine Möglichkeit, es dauerhaft zu entfernen, ohne bei jedem Start ein Skript ausführen zu müssen?

Nathan Ridley
quelle
Nur zu Remove-Item alias:curl
Ihrer Information

Antworten:

33

Überspringen Sie diesen Schritt, wenn Sie bereits ein Powershell-Profil haben:

New-Item $profile -force -itemtype file

Dann bearbeite dein Profil:

notepad $profile

Fügen Sie die folgende Zeile hinzu:

remove-item alias:curl

Speichern, schließen Sie den Editor und laden Sie das Profil mit dem folgenden Befehl neu oder schließen und öffnen Sie Powershell, um das Profil anzuwenden:

. $profile
Megamorf
quelle
1
Vielen Dank. Ich muss sagen, dass es ärgerlich ist, dass die Powershell-Entwickler dies nicht durchdacht haben und uns gezwungen haben, das Problem auf diese Weise zu umgehen.
Nathan Ridley
Ich denke nicht, dass es ein 1: 1-Ersatz sein soll. Powershell konzentriert sich auf die übergreifende Verwendung eines definierten Parametersatzes und die automatische Parameterbindung (was wirklich großartig ist, wenn Sie erst einmal damit anfangen). Das Bereitstellen des Curl-Alias ​​dient dazu, Leuten, die an * nix gewöhnt sind, zu zeigen, dass es in Powershell ein Curl-Äquivalent gibt.
Megamorf
1
Der erste Schritt kann immer übersprungen werden. Ich habe gerade gefragt, ob ich die Datei erstellen möchte.
8.
Zu Ihrer Information: Für einige Aliase müssen Sie "-Force"
Dan Friedman
Das "lustige" ist, dass sogar Azure Docs Curl-Befehle zeigen, um Dinge schnell zu testen. Echte Curl-Befehle, keine Invoke-WebRequestSyntax ...
Akos Lukacs
4

Ich würde bei der Verwendung bleiben, curl.exeanstatt nur curl. Dieser Ansatz setzt nicht voraus, dass PowerShell mit einem bestimmten Profil ausgeführt wird (und PowerShell kann mit -NoProfileswitch überhaupt ohne Profil ausgeführt werden).

Beatcracker
quelle
1
Ich könnte argumentieren, dass Powershell theoretisch irgendwann unter Unix laufen könnte, wo Programmdateien keine ".exe" -Erweiterung haben. Es macht absolut keinen Sinn, unter Unix Aliase in Skripten zu aktivieren . Ich muss mich fragen, ob diese schlechte Design-Wahl absichtlich war, um zu versuchen, den OpenSource-GNU-Software-Stack unter Windows zu töten. Und warum haben wir nicht wenigstens einen "Befehl" eingebaut, um die Shell zu zwingen, nach einem richtigen Programm zu suchen? Powershell versagt wirklich nach dem KISS-Prinzip.
Johan Boulé
1
@ JohanBoulé Keine Notwendigkeit für Verschwörungstheorien, es war nur ein Versehen. PowerShell 6 läuft bereits unter Linux und die Alias-Probleme sind teilweise behoben. Sehen Sie diese Links: initialsession: Entfernen curl und wget Aliase , Bitte entfernen Sie alle integrierten Aliase und steckte sie in einem Modul , Geben Sie eine Syntax nativen Binärdateien zu rufen , wenn der Name ein Alias ist
beatcracker
Keiner dieser PRs wird zusammengeführt. Ich sage es nur.
Dan Friedman
0

Remove-Item alias:curZum Autorun-Skript von Powershell hinzufügen

über XP, 2003:

%ALLUSERSPROFILE%\Documents\Msh\profile.msh
%ALLUSERSPROFILE%\Documents\Msh\Microsoft.Management.Automation.msh_profile.msh

XP, 2003:

%USERPROFILE%\My Documents\msh\profile.msh
%USERPROFILE%\My Documents\msh\Microsoft.Management.Automation.msh_profile.msh
STTR
quelle