2016-12-16 2 views
1

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

Так что я хочу сделать что-то вроде этого:

function loadMyFunctions{ 
    . \MyFunctions.ps1 
} 

Теперь, в MyFunctions.ps1 У меня есть функция:

function bobtest{ 
    write-host "My name is Bob Newhart." 
} 

Я могу загрузить скрипт MyFunctions.ps1, но после этого загружен Я не могу позвонить bobtest в консоли - я получаю сообщение об ошибке The term bobtest is not recognized...

Однако, если я просто загружаю скрипт поверх e функция, то этот скрипт загружен, и я могу нормально позвонить по телефону bobtest, но это означает, что я не могу просто не загружать MyFunctions, когда профиль загружен - I имеют для загрузки MyFunctions и не может выбрать.

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

Есть ли другой способ сделать это или это можно сделать?

+0

Это интересно - я коротко подумал о модулях, а потом забыл об этом - я попытаюсь выяснить, как это сделать. – bgmCoder

+0

Извините, случайно удалил этот комментарий. Модули - неплохой путь! Я использовал их в прошлом, а не использовал функции. Никогда с ними не было проблем. Использование профиля для вызова модуля с другими функциями внутри него. Я удалил предыдущий ответ, так как я согласен, что неправильно истолковал вопрос. –

ответ

3

Посмотрите на это page, как создать модули PowerShell и манифесты.

Это позволит вам создать модуль, который будет иметь все ваши пользовательские функции! Затем в вашем командлете loadMyFunctions добавьте Import-Module NewModuleName.

Это позволит вам использовать ваши командлеты.

Надеется, что это помогает, Lachlan

+0

Это работает отлично и именно то, что я искал - спасибо за хорошую идею. – bgmCoder

+0

Многое к добру, рада помочь –

1

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

См. Приведенные ниже скриншоты, которые я выполнил.

У меня есть функция дополнение, который просто делает добавление и я сохранил его как funct1.ps1

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

Funct1.ps1

enter image description here

Срабатывает функцию из другой функции в другом сценарии.

enter image description here

Надеется, что это помогает ... !!!

+0

Это разумный подход. Я знаю, что функция может dotsource сценарий и использовать его функции, но я действительно хотел, чтобы «включить» сценарий «на лету» по выбору. – bgmCoder

Смежные вопросы