Ошибка при выполнении Get-модуля в powershell 2.0

#powershell #powershell-2.0

#powershell #powershell-2.0

Вопрос:

Я новичок в powershell.Я столкнулся с ошибкой при работе над существующим сценарием. В C:/Scripts У меня есть 3 файла. Один файл .ps1 и 2 файла .psm1.

Имя файла ps1: RunScript.ps1
Это импортирует файлы .psm1, как показано ниже.

 $modules = @(
    "$PsscriptRootModulesModule1.psm1",
    "$PsscriptRootModulesModule2.psm1"
)

foreach ($module in $modules) {
    if (-not $(Get-Module $module)) {
        Import-Module $module -Force -WarningAction SilentlyContinue
    }
}
  

Приведенный выше код выдает ошибку, как показано ниже

Get-Module : выполнение командлета Get-Module без параметра ListAvailable не поддерживается для имен модулей, которые включают путь. Параметр Name содержит этот элемент ‘C:ScriptsModulesModule1.psm1 ‘ который преобразуется в путь. Обновите параметр Name, чтобы в нем не было элементов path, а затем повторите попытку.

Ожидается, что путь к файлу не будет указан. Но как мне выполнить Get-Module в этом сценарии. Любая помощь очень полезна.Спасибо.

Комментарии:

1. Совпадает ли имя файла с именем модуля?

2. @guiwhatsthat да

3. Таким образом, вы могли бы проверить только с именем файла. Что-то вроде этого: Get-Module -Name (([System.IO.FileInfo]"$Path").BaseName)

Ответ №1:

Get-Module возвращает модули, импортированные в текущий сеанс, или установленные модули, которые доступны для импорта. Вы должны установить свой модуль, тогда он будет доступен с помощью командлета get-module, используя имя вашего модуля.

Я не совсем уверен, что вы пытаетесь сделать со своим скриптом? Вы хотите импортировать его, только если он еще не импортирован?

Я бы добавил это в качестве комментария, но пока не могу…