У меня есть скрипт сборки, который зависит от более старой версии одного из наших модулей.Версия 1.0.1 .Я добавил -MaximumVersion 1.0.1
к команде Import-Module
.При запуске сценария сборки происходит сбой, и ошибка показывает, что выполняется код в версии 2.1.0 модуля.
Import-Module DrilQuip.Build -MaximumVersion 1.0.1 -Force
Создание следующего номера версии... Свойство 'VersionFilePath' не может быть найдено для этого объекта.Убедитесь, что свойство существует.В C: \ Users \ svcTFSBuildProd \ Documents \ WindowsPowerShell \ Modules \ DrilQuip.Build \ 2.1.0 \ DrilQuip.Build.psm1: 253 char: 5
Я пробовал с и безпереключатель -Force
, но это не имеет значения.
Я использовал Get-Module DrilQuip.Build -ListAvailable
, чтобы подтвердить, что на компьютере установлена версия 1.0.1 .
Как я могуУбедитесь, что скрипт импортирует и использует более старую версию модулей?
Обновление 1
Добавлен переключатель -Verbose
для получения более подробной информации о происходящем.Вот результаты:
VERBOSE: загрузка модуля по пути ' C: \ Program Files \ WindowsPowerShell \ Modules \ DrilQuip.Build \ 1.0.1 \ DrilQuip.Build.psd1'.VERBOSE: Заполнение свойства RepositorySourceLocation для модуля DrilQuip.Build.
Создание следующего номера версии ... Свойство 'VersionFilePath' не может быть найдено для этого объекта.Убедитесь, что свойство существует.В C: \ Users \ svcTFSBuildProd \ Documents \ WindowsPowerShell \ Modules \ DrilQuip.Build \ 2.1.0 \ DrilQuip.Build.psm1: 253 char: 5 + $ Matches = Select-String -Path $ global:BuildConfig.VersionFilePat ...
Это показывает, что один и тот же модуль был установлен в 2 разных местах.Местоположение C: \ Users \ svcTFSBuildProd ... , кажется, превосходит местоположение C: \ Program Files \ WindowsPowerShell ...
Я думаю, что это нужно сделатьс машиной против пользовательской области при установке модуля.Я вернусь и удалю модули с пользовательской областью и установлю все версии модуля с областью действия Машины и посмотрю, поможет ли это.
Обновление 2
Я удалил все версии модуляиз пользовательской области видимости, а затем снова попробовал скрипт.По-прежнему происходит сбой, но теперь обе версии модуля поступают из одного и того же расположения папки модуля.
VERBOSE: загрузка модуля по пути ' C: \ Program Files \ WindowsPowerShell \ Modules \ DrilQuip.Build \1.0.1 \ DrilQuip.Build.psd1.VERBOSE: Заполнение свойства RepositorySourceLocation для модуля DrilQuip.Build.Создание следующего номера версии ... Свойство 'VersionFilePath' не может быть найдено для этого объекта.Убедитесь, что свойство существует.В C: \ Program Files \ WindowsPowerShell \ Modules \ DrilQuip.Build \ 2.0.4 \ DrilQuip.Build.psm1: 251 char: 5
Поскольку новая версия все еще превосходит максимальнуюВерсия Я запросил мою теорию о том, что пользовательский охват превосходит машинный объем не является реальной проблемой.Что-то еще происходит.
Я снова запустил Get-Module -Name DrilQuip.Build -ListAvailable
, и я заметил, что ModuleType отличается.В версии 1.0.1 тип Манифест , но в версиях 1.1.1 и 2.0.4 тип Script.Возможно, это различие вызывает проблему.
ModuleType Version Name
---------- ------- ----
Script 2.0.4 DrilQuip.Build
Script 1.1.1 DrilQuip.Build
Manifest 1.0.1 DrilQuip.Build
Я удалю все модули и переустановлю их из репозитория.