Это должно быть простой задачей, но я видел несколько попыток узнать, как получить путь к каталогу, где исполняемый командлет находится с переменным успехом. Например, когда я выполняю 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?