2

我有一个简单的模块,称为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”,因为在任何模块目录中都找不到有效的模块文件。在 line:1 char:17 + & {Import-Module <<<< MyModule} -File Show.ps1 + CategoryInfo : ResourceUnavailable: (MyModule:String) [Import-M odule], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell .Comm
ands.ImportModuleCommand

有人可以帮助我如何仅通过 cmd.exeexactly what I have stated执行上述操作,而无需硬编码或指定完整的模块路径吗?

我们为加载 SystemModules 所做的类似操作 -powershell.exe -ImportSystemModules

4

2 回答 2

3

你明白那SysWOW64是 32 位和System3264 位吗?

该模块存在于 32 位 Powershell 模块查找路径中,因此只能由 32 位 Powershell 控制台看到。如果您从 64 位cmd控制台调用 powershell,您将打开 64 位控制台。

打开 32 位 cmd 提示符或将其移动到 64 位模块路径,

于 2012-10-14T14:58:00.160 回答
3

您正在运行 32 位 cmd.exe 吗?如果是这样,那么 Import-Module 应该可以工作。如果您正在运行 64 位 cmd.exe,则将启动 64 位 PowerShell.exe,除非您完全限定 32 位版本 PowerShell.exe 的路径(c:\windows\syswow64\windowspowershell\v1. 0\powershell.exe)。

于 2012-10-15T13:55:47.780 回答