У меня есть большой объем кода PowerShell, который я написал в ходе длительного проекта; эти сценарии выполняют широкий спектр функций, и большинство из них так или иначе зависят от других в рамках проекта. Прямо сейчас работа состоит из пары файлов, каждый из которых содержит множество функций. Первоначально для работы с этими сценариями все файлы сценариев были как бы случайным образом загружены в среду через точки.
Однако недавно я узнал, что Powershell 2.0 представляет модули, и я хотел бы развернуть эти сценарии вместе таким образом. Поскольку все содержимое модуля загружается вместе, я хотел бы разделить мои файлы, чтобы у каждого скрипта был свой собственный файл, чтобы облегчить контроль версий. Однако сейчас я немного не понимаю связи между скриптами.
Я провел некоторое тестирование, и мне кажется, что можно переместить команду Export-ModuleMember для каждой функции в отдельные файлы .ps1; это больше похоже на функции, объявляющие свою собственную область видимости, такие как общедоступная и частная область видимости в C #. Однако после этого мой файл .psm1 не содержит ничего, кроме этого:
Get-ChildItem -recurse $psScriptRoot | where { $_.Extension -eq ".ps1" } | foreach { . $_.FullName }
Это кажется правильным? Все скрипты получают точечный источник, и все скрипты ссылаются друг на друга в соответствии с этим предположением. Должны ли они вместо этого ссылаться друг на друга, используя свое местоположение относительно $ psScriptRoot?
Есть ли способ, отличный от обоих этих способов? Кто-нибудь может дать совет? Я пока мало что знаю об этом.