Получить расположение файла Powershell, содержащего внешнюю функцию

Мне нужно вызвать функцию powershell, определенную в файле в отдельной папке. Эта функция должна использовать dll, расположенную в той же папке. Есть ли простой способ сделать это?

Подробности:

Структура:

  • сборка\сборка.ps1
  • инструменты\myTool\fileWithFunction.ps1
  • инструменты\myTool\someDll.dll

build.ps1 включает "...\tools\myTool\fileWithFunction.ps1"

Он вызывает функцию в этом файле. Эта функция должна загрузить someDll.dll. Я мог передать местоположение папки (toos\myTool) в вызове функции, но мне было интересно, есть ли способ, с помощью которого функция в fileWithFunction может сама определить местоположение dll (при условии, что что он всегда в одной и той же папке).


person ashic    schedule 28.04.2014    source источник
comment
stackoverflow.com/questions/801967/   -  person Raf    schedule 28.04.2014
comment
На самом деле у меня \tools\psake\psake вызывает build\build.ps1. Использование кода в этом посте дает мне \tools\psake вместо \tools\myTool.   -  person ashic    schedule 28.04.2014
comment
* ... \psake вызывается build\build.ps1   -  person ashic    schedule 28.04.2014


Ответы (2)


Используйте $PSScriptRoot, это должно получить то, что вам нужно.

person Raf    schedule 28.04.2014

И если вы используете PowerShell V2 (надеюсь, вы используете хотя бы v3), поместите это в файлWithFunction.ps1.

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

Затем получите доступ к каталогу следующим образом:

"ScriptDir is $(&$ScriptDir)"

Блок сценариев используется для обеспечения безопасности при точечном поиске файлов сценариев.

person Keith Hill    schedule 28.04.2014