#Requires 看不到模块,Import-Module 有效
#Requires doesn't see the module, Import-Module works
当我 运行 一个在第一行带有 #Requires -Version 4 -Modules TestModule
语句的简单脚本时,我得到一个错误:
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
我不知道发生了什么。
找到原因了。
我将 #Requires
替换为 Import-Module TestModule -Verbose
并发现其中一个程序集无法加载,生成错误,但由于 $ErrorActionPreference=Continue
模块的其余部分已加载。 #Requires
的行为似乎与 Import-Module
不同。
当我 运行 一个在第一行带有 #Requires -Version 4 -Modules TestModule
语句的简单脚本时,我得到一个错误:
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
我不知道发生了什么。
找到原因了。
我将 #Requires
替换为 Import-Module TestModule -Verbose
并发现其中一个程序集无法加载,生成错误,但由于 $ErrorActionPreference=Continue
模块的其余部分已加载。 #Requires
的行为似乎与 Import-Module
不同。