Как мне сделать мой собственный псевдоним переопределить псевдоним модуля? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть псевдоним для touch, созданный в моем $profile, однако я также использую PSCX, похоже, имеет свой собственный touch.Когда я запускаю touch PSCX, запускается:

$ which touch
Pscx\Set-FileTime

Как мне сделать, чтобы PowerShell предпочел мой псевдоним над псевдонимом модулей?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

В вашем $PROFILE:

  • Сначала явно импортируйте модуль PSCX - в этот момент псевдоним этого модуля touch будет импортирован изаменит любое существующее определение: Import-Module PSCX

    • Примечание: Добавьте Import-Module PSCX, даже если оно в настоящее время не в вашем $PROFILE;как правило, модуль автоматически загружается , по требованию , поскольку находится в одном из каталогов, перечисленных в переменной среды $env:PSModulePath.
      Именно импорт по требованию, время которого непредсказуемо (всякий раз, когда вы впервые вызываете команду из модуля), предотвращает надежную замену псевдонима;принудительно импортируя модуль в $PROFILE до , вы определяете свою версию псевдонима, которая решает эту проблему.
  • Тогда переопределить псевдоним по мере необходимости;Например: Set-Alias touch touch.exe

    • Предупреждение : Если кто-то принудительно повторно импортирует модуль позже с Import-Module -Force PSCX, ваш псевдоним будет снова заменен.

Примечание. Это не обязательно для конкретного псевдонима, о котором идет речь, но для замены псевдонимов, которые определены как -Option AllScope (верно для встроенных псевдонимов, таких как dir и select), вы сталкиваетесь с двумя неоптимальными вариантами:

  • Либо: Переопределите с помощью -Option AllScope, что, однако, означает, что все области видят новое определение;Например, Set-Alias -Option AllScope touch touch.exe.

  • Или: Сначала удалите исходный псевдоним - например, Remove-Item alias:touch (PSv6 +: Remove-Alias touch) - и затем определите по необходимости, что означает, что другие области больше не будут видеть исходное определение.

0 голосов
/ 23 октября 2018

Создание этого ответа, а не комментария, чтобы я мог набрать больше текста.

См. https://serverfault.com/questions/452430/how-to-override-the-default-dir-alias-in-powershell

Мнение следующее:

Однако, в зависимости от вашего использования, яНастоятельно рекомендую не использовать псевдонимы в любом скрипте или модуле, так как они могут быть изменены и могут не выполнять необходимые действия.

Если вы действительно хотите использовать псевдоним, я мог бы просто избежать всего этого и создать неконфликтующий псевдоним, который все еще имеет смысл.Может быть tf или tfile для TouchFile.

...