我有一个名为MyModule.psm1
的简单模块,定义为
function Show-Text($p)
{
Write-Host $p
}
Export-ModuleMember Show-Text
模块保存在这里 - (一切正常,通过ISE或直接Powershell命令行的正常方式)
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules\MyModule (because 64-bit OS)
现在,我有一个名为Test.ps1
的脚本
Show-Text "Hello World"
注意:我不想在ps1文件中执行Import-Module MyModule
我正在从cmd.exe窗口运行以下命令
C:\>Powershell -Command "& {Import-Module MyModule}" -File "C:\temp\Test.ps1"
我收到以下错误
Import-Module:未加载指定的模块“MyModule”,因为 在任何模块目录中找不到有效的模块文件。在线:1 焦炭:17 +& {Import-Module<<<< MyModule} -File Show.ps1 + CategoryInfo:ResourceUnavailable:(MyModule:String)[Import-Module],FileNotFoundException + FullyQualifiedErrorId:Modules_ModuleNotFound,Microsoft.PowerShell.Comm
ands.ImportModuleCommand
有人可以通过 cmd.exe ONLY 帮助我如何执行上面的exactly what I have stated
而无需硬编码或指定完整的模块路径吗?
我们用于加载SystemModules的类似行 - powershell.exe -ImportSystemModules
答案 0 :(得分:3)
您确实理解SysWOW64
是32位且System32
是64位吗?
该模块存在于32位Powershell模块查找路径中,因此只能由32位Powershell控制台查看。如果从64位cmd
控制台调用powershell,则将打开64位控制台。
打开32位cmd提示符或将其移动到64位模块路径
答案 1 :(得分:3)
您运行的是32位cmd.exe吗?如果是这样,那么Import-Module应该可以工作。如果您运行的是64位cmd.exe,则会启动64位PowerShell.exe,除非您完全限定了32位版本的PowerShell.exe(c:\ windows \ syswow64 \ windowspowershell \ v1)的路径。 0 \ powershell.exe)。