我有一个基于脚本的 powershell 模块 (.psm1),并将它导入到我的主脚本中。但是,该模块需要调用位于其同一目录内的批处理文件,但显然无法看到它。目前有问题的函数如下所示:
function MyFunction
{
& .\myBatch.bat $param1 $param2
}
如何让函数看到批处理文件?
我有一个基于脚本的 powershell 模块 (.psm1),并将它导入到我的主脚本中。但是,该模块需要调用位于其同一目录内的批处理文件,但显然无法看到它。目前有问题的函数如下所示:
function MyFunction
{
& .\myBatch.bat $param1 $param2
}
如何让函数看到批处理文件?
.
是当前工作目录,而不是模块所在的目录。后者可以通过MyInvocation
变量来确定。将您的功能更改为:
function MyFunction {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
$dir = Split-Path $Invocation.MyCommand.Path
$cmd = Join-Path $dir "myBatch.bat"
& $cmd $param1 $param2
}
尝试这个:
function MyFunction {
& (Join-Path (Split-Path $MyInvocation.MyCommand.Path) 'myBatch.bat') $param1 $param2
}