¿Cómo elimino permanentemente un alias predeterminado de Powershell?


21

Por alguna razón desconocida, los desarrolladores incluyeron "curl" como un alias para Invoke-WebRequest, a pesar de que no es compatible con la implementación adecuada de curl, lo que significa que se interpone cuando trato de hacer una solicitud de curl. Puedo eliminar el alias usando Remove-Item alias:curl, pero la próxima vez que inicie Powershell, el alias ha regresado. ¿Hay alguna forma de eliminarlo permanentemente sin tener que ejecutar un script cada vez que inicio?


solo para su información: he emitido el mismo comando Remove-Item alias:curldentro de Windows Server 2019 y no aparece de nuevo incluso después de reiniciar
matson kepson

Respuestas:


30

Omita este paso si ya tiene un perfil de Powershell:

New-Item $profile -force -itemtype file

Luego edite su perfil:

notepad $profile

Agregue la siguiente línea:

remove-item alias:curl

Guarde, cierre el bloc de notas y vuelva a cargar el perfil con el siguiente comando o cierre y abra Powershell para aplicar el perfil:

. $profile

1
Gracias. Debo decir que es molesto que los desarrolladores de PowerShell no lo hayan pensado detenidamente, lo que nos obligó a tener que solucionar el problema de esta manera.
Nathan Ridley

No creo que sea un reemplazo 1: 1. Powershell se enfoca en el uso general de un conjunto definido de parámetros y el enlace automático de parámetros (lo cual es realmente genial una vez que ingresa). Proporcionar el alias curl es mostrar a las personas acostumbradas a * nix que hay un equivalente curl en Powershell.
megamorf

1
El primer paso siempre se puede omitir. Lo acabo de hacer y recibí una ventana emergente preguntando si quería crear el archivo.
np8

FYI: Para algunos alias, deberá agregar "-Force"
Dan Friedman

Lo "divertido" es que incluso los documentos azules muestran comandos curl para probar rápidamente. Comandos curl reales, no Invoke-WebRequestsintaxis ...
Akos Lukacs

4

Me quedaría con el uso en curl.exelugar de solo curl. Este enfoque no se basa en que PowerShell se ejecute con un perfil particular (y PowerShell podría ejecutarse sin ningún perfil utilizando el -NoProfileinterruptor).


1
Podría argumentar que, en teoría, powershell puede eventualmente ejecutarse en Unix, donde los archivos de programa no tienen una extensión ".exe". No tiene absolutamente ningún sentido unir a las personas para que tengan alias habilitados en los scripts . Tengo que preguntarme si esa elección de mal diseño fue deliberada para tratar de matar la pila de software GNU de código abierto en Windows. ¿Y por qué al menos no tenemos un "comando" incorporado para forzar al shell a buscar un programa real? Powershell realmente falla en el principio KISS.
Johan Boulé

1
@ JohanBoulé No hay necesidad de teorías de conspiración, solo fue un descuido. PowerShell 6 ya se ejecuta en Linux y los problemas de alias están parcialmente solucionados. Vea estos enlaces: initialsession: elimine los alias curl y wget , elimine todos los alias integrados y colóquelos en un módulo , proporcione una sintaxis para llamar a los binarios nativos cuando su nombre tenga un alias
beatcracker

Ninguno de esos RP está fusionado. Solo digo.
Dan Friedman

0

agregar Remove-Item alias:cural script de ejecución automática powershell

por encima 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.