编辑: unix实现似乎存在问题,这并不奇怪,因为它仍然是alpha版本。有关详细信息,请参阅this issue。
我在Mac上尝试使用Powershell非常有趣,并且知道我决定尝试制作一个简单的模块并导入它。我正在运行最新版本(6,alpha,版本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上是否还支持模块,或者我在这里做错了什么?
答案 0 :(得分:3)
模块路径变量应以大写字母编写!
而不是$env:PsModulePath
,这在Windows上是正确的(并且在Microsoft的许多文章中都是这样写的),您需要开始用大写编写它,以使脚本能够跨平台兼容:{{1 }}
有关详细信息,请参阅this issue。我做了this repo来演示适用于所有平台的模块加载。如果您遇到问题,请查看它。
编辑:在env变量中用冒号代替一个点,因为这可能是“更正确”