Powershell - Export-ModuleMember не работает

Я новичок в PowerShell, и я только начал создавать свой собственный модуль. Я создал файлы сценария и манифеста и поместил их в каталог C:\Program Files\WindowsPowerShell\Modules\ кто один из перечисленных $env:PSModulePath команда.

Я также могу импортировать и удалять модуль, но он не распознается как апплет или команда, когда я пытаюсь вызвать одну из функций.

Я использую команду Import-Module:

Import-Module MyModule

Мой файл сценария выглядит примерно так:

function MyFunction() {}

Export-ModuleMember -Function *

И мой манифест выглядит так:

FunctionsToExport = '*'

Нужно ли писать все экспортированные функции в манифест?

Спасибо за помощь.

3 ответа

Решение

Итак, через несколько часов я нашел ответ: ExportedCommand пустой пользовательский модуль PowerShell

Вам нужно поставить RootModule = 'MyModule.psm1' в манифест.

Хорошего дня!

Чтобы экспортировать все:

Манифест модуля (.psd1):

      FunctionsToExport = '*' 

Файл сценария модуля (.psm1):

      Export-ModuleMember -Function *

Чтобы ограничить то, что экспортируется:

Манифест модуля (.psd1):

      FunctionsToExport = 'Foo', 'Bar'

Файл сценария модуля (.psm1):

      Export-ModuleMember -Function Foo, Bar

Обратите внимание, что если кавычки не используются таким образом, это не будет работать, и об ошибке не будет сообщено.

для меня сработало следующее (на основе ответа Mica):

  1. Измените RootModule, как предложено Mica в файле psd1, на файл psm1.
  2. Используйте команду Import-Module -Force MyModule

(с флагом '-Force': «Этот параметр вызывает загрузку или перезагрузку модуля поверх текущего», как сказано на https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/import-module?view=powershell-7.1#examples)

Другие вопросы по тегам