无法在 Unix 上的 Powershell 中加载模块
Unable to load modules in Powershell on Unix
编辑: 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 上是否还不支持模块,或者我在这里做错了什么?
模块路径变量要大写!
而不是 $env:PsModulePath
,这在 Windows 上是正确的(并且在 Microsoft 的许多文章中都是这样写的)您需要开始以大写形式编写它,以便您的脚本可以交叉-平台兼容:$env:PSMODULEPATH
.
请参阅 this issue for more info. I made this repo 以演示适用于所有平台的模块加载。如果您遇到问题,请检查一下。
edit:用点代替环境变量中的冒号,因为这应该是 "more correct"
编辑: 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 上是否还不支持模块,或者我在这里做错了什么?
模块路径变量要大写!
而不是 $env:PsModulePath
,这在 Windows 上是正确的(并且在 Microsoft 的许多文章中都是这样写的)您需要开始以大写形式编写它,以便您的脚本可以交叉-平台兼容:$env:PSMODULEPATH
.
请参阅 this issue for more info. I made this repo 以演示适用于所有平台的模块加载。如果您遇到问题,请检查一下。
edit:用点代替环境变量中的冒号,因为这应该是 "more correct"