Могут ли PowerShell использовать псевдонимы по ключевым словам? - PullRequest
2 голосов
/ 11 июля 2019

Я искал команду Set-Alias, которая:

Создает или изменяет псевдоним для командлета или другой команды в текущем сеансе PowerShell.

Так что я подумал: а почему бы и нет, «да» ошибки, просто ради интереса (не в коде srs!), Попробовал:

Set-Alias -Name Yeet -Value throw
Get-Alias -Name Yeet

Get-Alias сообщает, что он создал псевдоним.

CommandType  Name            Version    Source
Alias        Yeet -> throw 

Попытка «вывести» ошибку:

yeet "oh sh*t"

Возвращает следующее:

yeet : The term 'throw' is not recognized as the name of a cmdlet, function, script file, or operable program.

Это потому, что это ключевое слово, а не команда? Вы можете увидеть, что псевдоним сработал. Какой лучший обходной путь? Функция, которая просто принимает параметр и сбрасывает его, кажется довольно скучной.

1 Ответ

3 голосов
/ 11 июля 2019

Нет, вы не можете использовать псевдоним чего-то, что не стоит само по себе, включая определения функций.Все команды псевдонимов являются суб-псевдонимами для вызова.

например,

function test { throw 'test' }
Set-Alias myalias test

, в то время как

Set-Alias myalias { throw 'test' }

не будет работать.Он преобразует блок скрипта в строку, а затем вызов псевдонима будет неудачным.

В общем случае , если ваша подпрограмма не отображается в Get-Command, вы не можете использовать псевдоним для нее..


Какой лучший обходной путь?Функция, которая просто принимает параметр и сбрасывает его, кажется довольно скучной.

Скучно - это функционально:

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