Есть ли способ создать псевдоним для командлета таким образом, чтобы он выполнялся только при передаче аргументов псевдониму? - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь создать псевдоним (с именем which ) для командлета Get-Command таким образом, чтобы он не выполнялся, если я 'я не посылаю никаких аргументов (потому что если он запускается без аргументов, он выводит все доступные команды).

Я знаю, что это можно сделать с помощью функции, но я хотел бы сохранить функциональность завершения табуляции без необходимостинаписать большую функцию, которая должна быть помещена в мой $ PROFILE .

Короче говоря, я хочу, чтобы псевдоним работал, только если ему передаются аргументы.

1 Ответ

0 голосов
/ 05 апреля 2019

Вы не можете сделать это с псевдонимом, потому что псевдонимы PowerShell могут ссылаться только на другую команду имя или путь и, следовательно, не могут включать ни аргументы , ни пользовательскую логику.

Хотя вам нужна функция , она не обязательно должна быть значимой :

function which { if ($args.count) { Get-Command @args } else { Throw "Missing command name." } }

Обратите внимание, однако, что при передаче -? для отображения справки Get-Command работает, завершение табуляции аргументов не работает.

Чтобы получить завершение табуляции, вам нужно написать прокси-функцию или хотя бы реплицировать объявления параметров Get-Command - что тогда делает , Значительная функция.

Если проблема только в размере $PROFILE, вы можете написать прокси script вместо - which.ps1 - который вы также можете вызвать с помощью which, предполагая, что вы разместите его в одном из каталогов, перечисленных в $env:Path.

...