如何永久删除默认的Powershell别名?


22

出于某种未知的原因,Invoke-WebRequest即使它与curl的正确实现不兼容,开发人员也将“ curl”用作的别名,这意味着在尝试发出curl请求时,它会受到干扰。我可以使用删除别名Remove-Item alias:curl,但是下次启动Powershell时,别名已经返回。有没有一种方法可以永久删除它,而不必每次启动时都运行脚本?


仅供参考:我Remove-Item alias:curl在Windows Server 2019中发出了相同的命令,即使重新启动也不会再次出现
Matson Kepson

Answers:


33

如果您已经拥有Powershell配置文件,请跳过此步骤:

New-Item $profile -force -itemtype file

然后编辑您的个人资料:

notepad $profile

向其添加以下行:

remove-item alias:curl

保存,关闭记事本,然后使用以下命令重新加载配置文件,或者关闭并打开Powershell以应用配置文件:

. $profile

1
谢谢。我必须说,令人讨厌的是Powershell开发人员没有考虑到这一点,迫使我们现在不得不以这种方式解决该问题。
内森·里德利

我不认为这是1:1的替代品。Powershell专注于对已定义的参数集和自动参数绑定的总体使用(一旦您使用它,这确实很棒)。提供curl别名是为了向习惯于* nix的人们显示Powershell中存在等效的curl。
megamorf

1
始终可以跳过第一步。我刚刚做完,然后弹出窗口询问我是否要创建文件。
np8

仅供参考:对于某些别名,您将需要附加“ -Force”
丹·弗里德曼

“有趣”的事情是,即使是天蓝色的文档也显示curl命令来快速测试事物。真正的curl命令,而不是Invoke-WebRequest语法...
Akos Lukacs,

4

我会坚持使用curl.exe而不是curl。这种方法不依赖于使用特定配置文件运行的PowerShell(而使用-NoProfileswitch 可以完全不使用配置文件运行PowerShell )。


1
我可以争辩说,从理论上讲,powershell最终可能会在unix上运行,因为程序文件没有扩展名“ .exe”。对于Unix人来说,在脚本中启用别名绝对是没有意义的。我想知道,这种错误的设计选择是否故意破坏了Windows上的开源GNU软件堆栈。为什么我们至少没有内置“命令”来强制外壳程序寻找真实程序?Powershell确实在KISS原则上失败了。
JohanBoulé18年

1
@JohanBoulé不需要阴谋论,这只是一个疏忽。PowerShell 6已在Linux上运行,别名问题已部分修复。请参阅以下链接:initialsession:删除curl和wget别名请删除所有内置别名并将它们放入模块中提供一种
beatcracker

这些PR均未合并。只是说。
丹·弗里德曼

0

添加Remove-Item alias:cur到Powershell自动运行脚本

2003年XP以上版本:

%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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.