1

我有一个基于脚本的 powershell 模块 (.psm1),并将它导入到我的主脚本中。但是,该模块需要调用位于其同一目录内的批处理文件,但显然无法看到它。目前有问题的函数如下所示:

function MyFunction
{
    & .\myBatch.bat $param1 $param2
}

如何让函数看到批处理文件?

4

2 回答 2

3

.是当前工作目录,而不是模块所在的目录。后者可以通过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
}
于 2013-07-11T15:46:52.023 回答
1

尝试这个:

function MyFunction {
  & (Join-Path (Split-Path $MyInvocation.MyCommand.Path) 'myBatch.bat') $param1 $param2
}
于 2013-07-11T16:52:53.133 回答