1

当我在第一行运行带有#Requires -Version 4 -Modules TestModule语句的简单脚本时,出现错误:

脚本“TestScript.ps1”无法运行,因为缺少脚本的“#requires”语句指定的以下模块:TestModule CategoryInfo : ResourceUnavailable: (TestScript.ps1:String) [], ScriptRequiresException FullyQualifiedErrorId : ScriptRequiresMissingModules

一些有趣的事实:

  1. 我第二次运行这个脚本(同一个会话),模块被加载并且一切正常。
  2. 脚本目录位于网络共享上,但其他 7 个模块加载时没有任何问题(模块类型是清单、脚本和二进制 - 它们都可以工作)。
  3. 其中一个模块也有#Requires -Version 4 -Modules TestModule语句,但是当我运行#Requires指向该模块的脚本时,两个模块都被加载而没有任何问题。
  4. 路径显然被添加到PSModulePath.
  5. 在运行脚本之前,Get-Module -ListAvailable会列出 TestModule 及其所有命令。
  6. Import-Module第一次工作。
  7. 机器上可能缺少某些东西:登录该计算机的任何人都遇到了同样的问题。

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18444
BuildVersion                   6.3.9600.16406

我不知道是怎么回事。

4

1 回答 1

4

找到了原因。我替换#RequiresImport-Module TestModule -Verbose发现其中一个程序集无法加载,产生错误,但由于$ErrorActionPreference=Continue加载了模块的其余部分。它的行为似乎#RequiresImport-Module.

于 2016-08-10T11:10:49.183 回答