Powershell 使用模块$PSScriptRoot:不是使用名称的有效值

Powershell 使用模块$PSScriptRoot:不是使用名称的有效值,powershell,powershell-module,Powershell,Powershell Module,如何将模块与$PSScriptRoot一起使用 using module $PSScriptRoot/../myfolder/base.psm1 # or: using module "$PSScriptRoot/../myfolder/base.psm1" 如果我这样做,我会得到以下错误: 使用模块$PSScriptRoot:不是使用名称的有效值 感谢@DavidBrabant,我尝试了以下方法: $scriptBody = "using module /Users/name/Develop

如何将模块
$PSScriptRoot
一起使用

using module $PSScriptRoot/../myfolder/base.psm1
# or: using module "$PSScriptRoot/../myfolder/base.psm1"
如果我这样做,我会得到以下错误:

使用模块$PSScriptRoot:不是使用名称的有效值

感谢@DavidBrabant,我尝试了以下方法:

$scriptBody = "using module /Users/name/Development/tools/powershell/base/base.psm1"
$script = [ScriptBlock]::Create($scriptBody)
. $script

Class Go : MyBaseClass {
    ...
不幸的是,我得到:

Unable to find type [MyBaseClass].PowerShell
Ignoring 'TypeNotFound' parse error on type 'MyBaseClass'. Check if the specified type is correct. This can also be due the type not being known at parse time due to types 

多亏了and@MathiasR.Jessen,我用“\”试过了,结果也一样。如果这有什么不同的话,我应该说我在mac电脑上。

这个答案是基于大卫对这个问题的评论

要在Using module语句中使用变量值,请创建一个包含Using module语句的脚本块,并将其点源代码添加到脚本中。(感谢Bartek Bielawski提供了此解决方案。)

Param(
[参数(强制性)]
[字符串]
$ModuleName
)
$scriptBody=“使用模块$ModuleName”
$script=[ScriptBlock]::创建($scriptBody)
. $剧本
...

来源:

这个答案是基于大卫对这个问题的评论

要在Using module语句中使用变量值,请创建一个包含Using module语句的脚本块,并将其点源代码添加到脚本中。(感谢Bartek Bielawski提供了此解决方案。)

Param(
[参数(强制性)]
[字符串]
$ModuleName
)
$scriptBody=“使用模块$ModuleName”
$script=[ScriptBlock]::创建($scriptBody)
. $剧本
...

来源:

使用模块语句不能包含任何变量。它的值必须是静态的。有一个变通办法。请参见此处:
使用模块
指令,尝试使用模块$PSScriptRoot\..\myfolder\base.psm1
使用模块..\myfolder\base.psm1
使用模块语句不能包含任何变量。它的值必须是静态的。有一个变通办法。请参见此处:
using module
指令,尝试使用
using module$PSScriptRoot\..\myfolder\base.psm1
using module..\myfolder\base.psm1