Учитывая простую функцию PowerShell:
function gpg {
C:\Program files\GNU\GnuPG\gpgcmd.exe $args
}
Где я должен поместить это определение функции, чтобы сделать gpg
доступным в качестве команды PowerShell?
Учитывая простую функцию PowerShell:
function gpg {
C:\Program files\GNU\GnuPG\gpgcmd.exe $args
}
Где я должен поместить это определение функции, чтобы сделать gpg
доступным в качестве команды PowerShell?
Поместите его в свой профиль PowerShell
Профиль всегда загружается при запуске PowerShell, кроме случаев, когда вы вызываете PowerShell с параметром -NoProfile
, что (по крайней мере, в моей сети) встречается редко. Поэтому при запуске PowerShell вы можете сразу использовать свои функции.
Если вы хотите создать профиль PowerShell для нескольких компьютеров, я бы использовал GPO для развертывания профиля из исходного пути на конечные компьютеры.
Помните, что существуют отдельные профили для PowerShell и PowerShell_ISE.
Как упомянул @SimonS, вы можете поместить его в свой профиль. И в вашем случае простая функция, помогающая упростить выполнение одной команды, вероятно, правильный выбор профиля. Но я бы хотел упомянуть еще один вариант.
Если вы используете в вашей системе версию powershell выше 3.0, то другой вариант - поместить вашу функцию или функции в модуль Powershell. Модули в пути вашего модуля будут автоматически загружены, и все экспортированные функции будут доступны. Модуль, который вы создаете, должен находиться в пути к модулю ($env:psmodulePath
), хорошее расположение для общесистемных модулей - C:\Program Files\WindowsPowerShell\Modules
.
Вы действительно не хотите помещать слишком много материала в свой профиль. Сначала ваш профиль загружается, когда вы запускаете Powershell, и больше вещей, которые вы там определите, окажет некоторое влияние на скорость загрузки Powershell. Профили не загружаются автоматически при использовании удаленного взаимодействия PS, но в модулях, которые находятся в пути в целевой системе, загружаются автоматически.