Ответ 1
Как упоминает Алекс, любая функция, определенная в вашем профиле или в script, которая попадает в ваш профиль, будет всегда доступна. То же самое происходит, если вы используете Add-PSSnapin в своем профиле, чтобы добавить snapin. Командлеты в snapin всегда будут доступны. Подробнее о профилях читайте в разделе справки:
man about_profiles
Однако, если у вас есть значительное количество функций, вы можете не загружать их, пока они не понадобятся. В этом случае вы можете организовать функциональность в скриптах, а затем поместить эти сценарии в одну или несколько каталогов, которые находятся на вашем пути. Затем вы можете ссылаться на script по имени без указания полного пути или даже расширения .PS1. Дополнительные сведения об использовании скриптов см. В разделе справки:
man about_scripts
PowerShell V2 предлагает еще лучший подход к организации функций и загрузке их по требованию. Эта функция называется модулями и позволяет вам импортировать модуль простым именем (а не путем) и выбирать, какие функции и переменные становятся общедоступными, а какие остаются частными. Если у вас есть V2, проверьте модули:
man about_modules