Comment supprimer définitivement un alias Powershell par défaut?

22

Pour une raison inconnue, les développeurs ont inclus "curl" comme alias pour Invoke-WebRequest, même s'il n'est pas compatible avec la bonne implémentation de curl, ce qui signifie qu'il se met en travers lorsque j'essaie de faire une demande de curl. Je peux supprimer l'alias à l'aide de Remove-Item alias:curl, mais la prochaine fois que je lance Powershell, l'alias est revenu. Existe-t-il un moyen de le supprimer définitivement sans avoir à exécuter un script à chaque démarrage?

Nathan Ridley
la source
juste pour info: j'ai émis la même commande à l' Remove-Item alias:curlintérieur du serveur Windows 2019 et elle n'apparaît plus, même après la restauration
matson kepson

Réponses:

33

Ignorez cette étape si vous avez déjà un profil Powershell:

New-Item $profile -force -itemtype file

Modifiez ensuite votre profil:

notepad $profile

Ajoutez-y la ligne suivante:

remove-item alias:curl

Enregistrez, fermez le bloc-notes et rechargez le profil avec la commande ci-dessous ou fermez et ouvrez Powershell pour appliquer le profil:

. $profile
Megamorf
la source
1
Merci. Je dois dire que c'est ennuyeux que les développeurs PowerShell n'y aient pas réfléchi, ce qui nous oblige maintenant à contourner le problème de cette façon.
Nathan Ridley
Je ne pense pas que ce soit censé être un remplacement 1: 1. Powershell se concentre sur une utilisation globale d'un ensemble défini de paramètres et la liaison automatique de paramètres (ce qui est vraiment génial une fois que vous y êtes). Fournir l'alias curl est de montrer aux gens habitués à * nix qu'il existe un équivalent curl dans Powershell.
megamorf
1
La première étape peut toujours être ignorée. Je viens de le faire et j'ai reçu une fenêtre contextuelle me demandant si je voulais créer le fichier.
np8
FYI: Pour certains alias, vous devrez ajouter "-Force"
Dan Friedman
La chose "drôle" est que même les documents azur montrent des commandes curl pour tester rapidement la chose. De vraies commandes de curl, pas de Invoke-WebRequestsyntaxe ...
Akos Lukacs
4

Je préfère utiliser curl.exeau lieu de simplement curl. Cette approche ne repose pas sur l'exécution de PowerShell avec un profil particulier (et PowerShell pourrait être exécuté sans aucun profil à l'aide de -NoProfileswitch).

beatcracker
la source
1
Je pourrais affirmer qu'en théorie, PowerShell peut éventuellement fonctionner sur Unix, où les fichiers de programme n'ont pas d'extension ".exe". Cela n'a aucun sens de décompresser les gens pour que les alias soient activés dans les scripts . Je dois me demander si ce mauvais choix de conception était délibéré pour essayer de tuer la pile logicielle GNU open source sur Windows. Et pourquoi n'avons-nous pas au moins une "commande" intégrée pour forcer le shell à rechercher un vrai programme? Powershell échoue vraiment sur le principe KISS.
Johan Boulé
1
@ JohanBoulé Pas besoin de théories du complot, c'était juste un oubli. PowerShell 6 fonctionne déjà sur Linux et les problèmes d'alias sont partiellement résolus. Voir ces liens: initialsession: supprimer les alias curl et wget , veuillez supprimer tous les alias intégrés et les mettre dans un module , fournir une syntaxe pour appeler les binaires natifs lorsque son nom est
aliasé
Aucun de ces RP n'est fusionné. Je dis juste.
Dan Friedman
0

ajouter Remove-Item alias:curau script d'exécution automatique powershell

au-dessus de 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
la source