Есть ли способ получить путь к скрипту, который импортировал модуль из этого модуля?Получить путь от импортирующего скрипта из модуля?
Модуль сценария, который я пишу, предназначен для загрузки настроек из файлов относительно сценария импорта. Я планирую повторно использовать модуль для ряда проектов, поэтому я бы предпочел, чтобы модуль не мог делать никаких предположений о том, откуда его импортировать.
Приятно иметь, было бы замечательно, что модуль может быть как можно более неявным. Если все остальное не удается, я могу просто передать номер вызывающего абонента в его местоположение.
К сожалению, все, что я попытался до сих пор, возвращает путь к модулю (а не то, что импортировало его). Вот простая демонстрация:
Тест-RelativeModule.ps1, Хранится в: C: \ Test \
import-module "$PSScriptRoot\mod\Test.psm1"
Test.psm1, Хранится в: с: \ test \ mod \
# returns 'c:\test\mod'
write-host "`$PSScriptRoot: $PSScriptRoot"
# returns 'c:\test\mod'
# The value of $MyInvocation.MyCommand.Path is 'c:\test\mod\Test.psm1'
write-host "Split Invoation: $(Split-Path $MyInvocation.MyCommand.Path)"
# returns whatever path the console is currently residing
write-host "Resolve Path: $((resolve-path '.\').path)"
# what I'm looking for is something to return 'c:\test' from within the module
# without making any assumptions about the folder structure
* So close *! 'Split-Path' не требуется. Просто: 'Write-Host 'Invoker: $ ($ MyInvocation.PSScriptRoot)" '- Редактировать, и я соглашусь. Благодаря! – klyd
Я обновил ответ. –