Как я могу предотвратить использование PowerShell YabaDabaDoo в качестве псевдонима для Get-YabaDabaDoo? - PullRequest
0 голосов
/ 05 февраля 2020

Пожалуйста, обратите внимание:

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:\>

Я не хочу такого поведения. Как можно это контролировать?

1 Ответ

2 голосов
/ 05 февраля 2020

Начиная с PowerShell Core 7.0.0-r c .2, вы не можете предотвратить это поведение, что обусловлено (дорогостоящим) дизайном: Get подразумевается глагол по умолчанию , поэтому при отправке Content в конечном итоге, например, Get-Content, если только не существует команда с явным именем Content.

Член команды PowerShell открыто рассмотрел возможность удаления этой функции , учитывая, что она неясна и дорогостоящая с точки зрения производительности (в дополнение к неполной реализации):

Обратите внимание, что это поведение поиска команд не ограничивается командлетами - он работает для любой команды, включая собственные команды.

Это также очень дорого - сначала мы выполняем поиск в обычном режиме (включая PATH), а если это не удается, мы повторяем поиск, предшествующий Get-.

Лично я предпочел бы устранить это несоответствие, чем формализовать его. Мы могли бы предоставить обработчик для $ExecutionContext.InvokeCommand.CommandNotFoundAction для людей, которые не хотят исправлять старые сценарии, использующие эту странную функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...