#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, используя имя вашего модуля.
Я не совсем уверен, что вы пытаетесь сделать со своим скриптом? Вы хотите импортировать его, только если он еще не импортирован?
Я бы добавил это в качестве комментария, но пока не могу…