如何防止 powershell 将 YabaDabaDoo 视为 Get-YabaDabaDoo 的别名?

标记

请注意:

C:\> Get-Date

Tuesday, February 4, 2020 5:50:55 PM

C:\> Date

Tuesday, February 4, 2020 5:50:57 PM

C:\> Get-Content C:\Users\mkharitonov\.bashrc
alias ls='ls --color=auto -alhX'
alias npp="C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe"
C:\> Content C:\Users\mkharitonov\.bashrc
alias ls='ls --color=auto -alhX'
alias npp="C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe"
C:\>

我不想要这种行为。一个人怎么能控制呢?

克莱门特0

从 PowerShell Core 7.0.0-rc.2 开始,您无法阻止这种行为,这是(代价高昂的)设计:Get隐含的默认动词,因此提交Content最终会调用Get-Content,例如 - 除非显式命名的命令Content也存在。

PowerShell 团队的一名成员公开考虑删除此功能,因为它在性能方面既模糊又昂贵(除了未完全实现):

请注意,此命令查找行为不限于 cmdlet - 它适用于任何命令,包括本机命令。

它也非常昂贵 - 我们首先正常搜索(包括 PATH),如果失败,我们将重复搜索 prepending Get-

就个人而言,我宁愿删除这个错误特征,也不愿将其正式化。我们可以为$ExecutionContext.InvokeCommand.CommandNotFoundAction那些不愿意修复依赖于这个奇怪功能的旧脚本的人提供一个处理程序

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章