Я пытаюсь создать модуль PowerShell, который будет ставить точки для любых функций, найденных в подпапке "\ Functions" , используя следующий код:
# Get the path to the function files
$functionPath = $PSScriptRoot + "\Functions\"
# Get a list of all the function filenames
$functionList = Get-ChildItem -Path $functionPath -Include *.ps1 -Name
# Loop through all discovered files and dot-source them into memory
ForEach ( $function in $functionList ) {
. ( $functionPath + $function )
}
Это работает нормально, если я уронил все свои функции прямо в папку "\ Functions". Однако это не идеально, так как я не думаю, что это позволяет должным образом управлять файлами функций в более позднее время (, особенно в командной среде, где несколько SysAdmins могут изменять файл сценария каждой функции в любой момент времени ). Кроме того, некоторые функции принимают входные данные из CSV или текстовых файлов, и будет намного удобнее, если эти активы и соответствующие функции будут находиться в одной папке.
Отсюда и мой вопрос: Как мне выполнить то, что я пытаюсь сделать выше (т. Е. С точечным источником ВСЕХ функций, которые находятся в подпапке "\ Functions" $ PSScriptRoot , даже если они находятся в подпапках?
PS. Конечная цель состоит в том, чтобы иметь модуль общего назначения, который я распространяю на все свои рабочие станции администратора, чтобы сделать доступными все сценарии / функции, связанные с администратором, которые мы создали. Затем, когда мы добавляем и удаляем сценарии, они динамически обновляются в модуле при каждом запуске PowerShell.
Благодарность Брайану Кафферки в этом YouTube Video за вдохновение