Часто используемые функции можно сложить в модуль
Пример структуры:
MyUtils/
MyUtils.psd1
MyUtils.psm1
functions/
Get-Something.ps1
Get-SomethingOther.ps1
Содержимое
MyUtils.psd1, минимальный вариант. только заполненные поля
@{
ModuleVersion = '1.0'
GUID = '72d739dd-bddf-4d7c-a358-1a40e2ff961d'
Description = 'MyUtils module'
NestedModules = @('MyUtils.psm1')
}
Guid необходимо сгенерировать через
[guid]::NewGuid()
Содержимое
MyUtils.psm1
Try {
Get-ChildItem "$PSScriptRoot\functions\*.ps1" -Exclude *.tests.ps1, *profile.ps1 |
ForEach-Object {
$Function = $_.Name
. $_.FullName
}
} Catch {
Write-Warning ("{0}: {1}" -f $Function,$_.Exception.Message)
Continue
}
Пример содержимого одной из функций
function Get-Something {
param(
$parameter
)
Write-Host "I'm Get-Something with $parameter"
}
Все дополнительные функции можно разрабатывать отдельно, а потом просто переносить в папку
MyUtils\functions.
и они будут сами подключаться к модулю при его повторной загрузке вместе с powershell
или через
Import-Module MyUtils -Force
Сам модуль в виде папки можно таскать простым копированием в одно из мест, определяемых через
$env:PSModulePath