【发布时间】:2015-08-11 15:29:53
【问题描述】:
当我在第一行运行带有#Requires -Version 4 -Modules TestModule 语句的简单脚本时,出现错误:
脚本“TestScript.ps1”无法运行,因为以下原因 由脚本的“#requires”语句指定的模块 缺少:TestModule CategoryInfo : ResourceUnavailable: (TestScript.ps1:String) [], ScriptRequiresException FullyQualifiedErrorId : ScriptRequiresMissingModules
一些有趣的事实:
- 我第二次运行此脚本(同一会话)时,模块已加载,一切正常。
- 脚本目录位于网络共享上,但其他 7 个模块的加载没有任何问题(模块类型为 Manifest、Script 和 Binary - 它们都可以正常工作)。
- 其中一个模块也有
#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 No.
#Requires应该加载模块。但是如果我在运行脚本之前加载模块,它就可以正常工作。 -
所以根据微软的说法“如果所需的模块不在当前会话中,Windows PowerShell 会导入它们。如果无法导入模块,Windows PowerShell 会引发终止错误。”我认为您要问的是什么?正确,为什么不自动导入。
标签: powershell powershell-4.0 powershell-module