2

编辑: unix 实现似乎存在问题,这并不奇怪,因为它仍然是一个 alpha 版本。有关更多信息,请参阅此问题


在我的 Mac 上尝试 Powershell 一直很有趣,并且知道我决定尝试制作一个简单的模块并导入它。我正在运行最新版本(6,alpha,release 12)。我一直未能导入它:

cat ./Foo/Foo.psm1
function Foo {
    param()
    }
    {
        Write-Output "foo says hi"
    }
}

cat ./foo-test.ps1

# add the current directory as a module dir
$env:PSModulePath = "/Users/john.doe/scripts/test"
Import-Module Foo


Import-Module : The specified module 'Foo' was not loaded because no valid module file was found in any module directory.
At /Users/john.doe/scripts/test/foo.ps1:3 char:1
+ Import-Module Foo
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (Foo:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

然后我尝试在 Windows 上导入模块。它立即起作用:

PS C:\GitHub> $env:PSModulePath="C:\Github\"
PS C:\GitHub> Import-Module Foo
PS C:\GitHub> start

(是的,我也尝试在 Mac 上的 shell 中执行此操作,但仍然不行)。

所以我想知道Mac上是否还不支持模块,或者我在这里做错了什么?

4

1 回答 1

4

模块路径变量要大写!

而不是$env:PsModulePath, 这在 Windows 上是正确的(并且在 Microsoft 的许多文章中都是这样写的),您需要开始以大写形式编写它,以便您的脚本与跨平台兼容:$env:PSMODULEPATH.

有关更多信息,请参阅此问题。我制作了这个 repo来演示适用于所有平台的模块加载。如果您遇到问题,请检查一下。

编辑:在 env 变量中用点代替冒号,因为这应该是“更正确的”

于 2016-11-13T21:42:50.097 回答