获取包含外部函数的Powershell文件的位置

时间:2014-04-28 11:41:08

标签: powershell

我需要调用在单独文件夹中的文件中定义的powershell函数。该函数需要使用位于同一文件夹中的dll。有没有简单的方法呢?

详细说明:

结构:

  • 建立\ build.ps1
  • 工具\ myTool \ fileWithFunction.ps1
  • 工具\ myTool \ someDll.dll

build.ps1包含“... \ tools \ myTool \ fileWithFunction.ps1”

它调用该文件中的函数。该函数需要加载someDll.dll。我可以在函数调用中传递文件夹(toos \ myTool)的位置,但是想知道是否有一种方法可以让fileWithFunction中的函数自己找出dll的位置(假设它总是在同一个文件夹中。)

2 个答案:

答案 0 :(得分:0)

使用$PSScriptRoot,这应该可以满足您的需求。

答案 1 :(得分:0)

如果您使用的是PowerShell V2(希望您至少使用v3),请将其放在fileWithFunction.ps1中

$ScriptDir = {Split-Path $MyInvocation.ScriptName –Parent}

然后像这样访问目录:

"ScriptDir is $(&$ScriptDir)"

使用scriptblock的原因是ensure safety when dot sourcing script files.