Възможно ли е да има помощни модули?

Имам редица разширени функции в PowerShell, които се занимават с номерата на версиите, което е основна част от нашия конфигурационен модул.

Когато потребителят импортира конфигурационния модул, тези функции трябва да са му достъпни. Бих могъл да копирам всички функции в конфигурационния модул, но ако се запази като помощен модул, ще бъде много добре да се организира.

Крайният потребител трябва да импортира само основния конфигурационен модул, но този помощен модул трябва да бъде включен към него. Има ли начин да се постигне това?


person Samselvaprabu    schedule 09.09.2015    source източник
comment
Можете да създадете някакъв вид свързване, т.е. когато главният модул е ​​импортиран, кодът вътре в основния модул тихо ще импортира помощния модул. Как да направите това   -  person kravasb    schedule 09.09.2015


Отговори (2)


Можете да посочите помощния модул като „вложен модул“ във вашия Манифест на модул.

@{
  ModuleToProcess   = 'Configuration.psm1'
  ModuleVersion     = '1.0'
  GUID              = '7ec463d6-de22-40bb-a505-1efcb3b22b73'
  Author            = 'Ansgar Wiechers'
  Description       = 'Configuration Module'
  PowerShellVersion = '2.0'

  FunctionsToExport = '*'
  CmdletsToExport   = '*'
  VariablesToExport = '*'
  AliasesToExport   = '*'

  NestedModules     = 'Helper'
}

Помощният модул всъщност не трябва да бъде вложен. Можете да поставите двата модула като отделни модули:

WindowsPowerShell
`-Modules
  +-Configuration
  | +-Configuration.psd1
  | `-Configuration.psm1
  `-Helper
    +-Helper.psd1
    `-Helper.psm1
person Ansgar Wiechers    schedule 09.09.2015

Можете да ги направите достъпни като кратки команди, като създадете друг път на PS модул и ги поставите там - това ще бъде достъпно във всяка PS сесия за всички потребители. всичко, което трябва да направят Import-Module и всички функции ще станат достъпни.

Вътре в модулите можете да имате папки, наречени същите като .psm1 файла вътре, напр. Modules/Configuration/Configuration.psm1 и Modules/Helper/Helper.psm1.

if (!(Test-Path $Profile.AllUsersAllHosts)) {
  $profile_new1 = New-Item -Type File -Path $Profile.AllUsersAllHosts -Force
  Add-Content $profile_new1 '$env:PSModulePath = $env:PSModulePath + ";C:\Temp\Modules"'
} else {
  $profile_exist = Get-Item $Profile.AllUsersAllHosts
  Add-Content $profile_exist '$env:PSModulePath = $env:PSModulePath + ";C:\Temp\Modules"'
}
person Nitsch_D    schedule 09.09.2015