#Requires看不到模块,Import-Module有效

时间:2015-08-11 15:29:54

标签: powershell powershell-v4.0 powershell-module

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

  

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

一些有趣的事实:

  1. 第二次运行此脚本(同一会话)时,模块已加载,一切正常。
  2. 脚本目录在网络共享上,但其他7个模块加载没有任何问题(模块类型是Manifest,Script和Binary - 它们都是worlk)。
  3. 其中一个模块也有#Requires -Version 4 -Modules TestModule语句,但当我运行一个脚本#Requires指向该模块时,两个模块都加载没有任何问题。
  4. 路径显然已添加到PSModulePath
  5. 在运行脚本之前,Get-Module -ListAvailable列出了TestModule及其所有'命令。
  6. Import-Module第一次工作。
  7. 计算机上可能缺少某些内容:登录该计算机的任何人都遇到了同样的问题。
  8. $PSVersionTable

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

    我不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

找到原因。 我用#Requires替换Import-Module TestModule -Verbose并发现其中一个程序集无法加载,生成错误,但由于$ErrorActionPreference=Continue加载了其余模块。 #Requires似乎与Import-Module的行为不同。