1

Учитывая простую функцию PowerShell:

function gpg {
    C:\Program files\GNU\GnuPG\gpgcmd.exe $args
}

Где я должен поместить это определение функции, чтобы сделать gpg доступным в качестве команды PowerShell?

2 ответа2

1

Поместите его в свой профиль PowerShell

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

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

Помните, что существуют отдельные профили для PowerShell и PowerShell_ISE.

1

Как упомянул @SimonS, вы можете поместить его в свой профиль. И в вашем случае простая функция, помогающая упростить выполнение одной команды, вероятно, правильный выбор профиля. Но я бы хотел упомянуть еще один вариант.

Если вы используете в вашей системе версию powershell выше 3.0, то другой вариант - поместить вашу функцию или функции в модуль Powershell. Модули в пути вашего модуля будут автоматически загружены, и все экспортированные функции будут доступны. Модуль, который вы создаете, должен находиться в пути к модулю ($env:psmodulePath), хорошее расположение для общесистемных модулей - C:\Program Files\WindowsPowerShell\Modules .

Вы действительно не хотите помещать слишком много материала в свой профиль. Сначала ваш профиль загружается, когда вы запускаете Powershell, и больше вещей, которые вы там определите, окажет некоторое влияние на скорость загрузки Powershell. Профили не загружаются автоматически при использовании удаленного взаимодействия PS, но в модулях, которые находятся в пути в целевой системе, загружаются автоматически.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .