Это должно быть простой задачей, но я видел несколько попыток получить путь к каталогу, где исполняемый командлет находится с переменным успехом. Например, когда я выполняю C:\temp\myscripts\mycmdlet.ps1
с файлом настроек в C:\temp\myscripts\settings.xml
, я бы хотел сохранить C:\temp\myscripts
в переменной внутри mycmdlet.ps1
.
Это одно решение, которое работает (хотя и немного громоздко):
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
Другой предложил это решение, которое работает только в нашей тестовой среде:
$settingspath = '.\settings.xml'
Мне очень нравится последний подход, и я предпочитаю каждый раз анализировать путь к файлу как параметр, но я не могу заставить его работать в моей среде разработки. Что мне делать? Это как-то связано с настройкой PowerShell?