При запуске простой сценарий с #Requires -Version 4 -Modules TestModule
заявление на первой линии, я получаю сообщение об ошибке:#Requires не видит модуль Import-Module работает
The script 'TestScript.ps1' cannot be run because the following modules that are specified by the "#requires" statements of the script are missing: TestModule CategoryInfo : ResourceUnavailable: (TestScript.ps1:String) [], ScriptRequiresException FullyQualifiedErrorId : ScriptRequiresMissingModules
Некоторые интересные факты:
- Во второй раз, когда я запускаю этот скрипт (тот же сеанс), модуль загружается и все работает.
- Каталог сценариев находится в общем сетевом ресурсе, но 7 других модулей загружаются без каких-либо проблем (типы модулей - манифест, скрипт и двоичный файл - все они работают).
- Один из модулей также имеет оператор
#Requires -Version 4 -Modules TestModule
, но когда я запускаю скрипт с#Requires
, указывающий на этот модуль, оба модуля загружаются без каких-либо проблем. - Путь, очевидно, добавлен в
PSModulePath
. - Перед запуском скрипта
Get-Module -ListAvailable
делает список TestModule и все его команды. Import-Module
работает в первый раз.- На машине может быть что-то отсутствующее: каждый, кто входит в систему на этом компьютере, испытывает ту же проблему.
$PSVersionTable
:
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18444
BuildVersion 6.3.9600.16406
Я понятия не имею, что происходит.
Вы загружаете модуль перед запуском сценария? – Luke
@ Luke No. '# Requires' должен загрузить модуль. Но если я загружаю модуль, прежде чем запускать скрипт, он отлично работает. –
Итак, согласно Microsoft «Если требуемые модули не находятся в текущем сеансе, Windows PowerShell импортирует их. Если модули не могут быть импортированы, Windows PowerShell выдает завершающую ошибку». о чем я думаю, о чем вы спрашиваете? правильно, почему он не импортирует его автоматически. – Luke