У меня есть следующий код в начале более длинного сценария:
$ScriptPath = Split-Path $MyInvocation.MyCommand.Path
& $ScriptPath\build_functions.ps1
& $ScriptPath\build_builddefs.ps1
Идея заключается в том, чтобы получить путь к скрипту запуска и использовать этот путь, чтобы назвать некоторые поддерживающие скрипты. Однако, когда я пошел, чтобы проверить это в изоляции, чтобы убедиться, что он может работать (выделив этот блок и работает только этот код), я получил следующее сообщение об ошибке:
Split-Path: Cannot bind argument to parameter 'Path' because it is null.
Интересно, что когда я запускаю весь сценарий Кажется, что эти файлы запускаются отдельно. Есть ли что-то, что мне не хватает в том, как ISE обрабатывает выделение, а не полный скрипт? Не устанавливает ли контекст файловой системы при запуске выделения?
$ MyInvocation.MyCommand.Path будет возвращать только путь, если вызывается из $ сценария: сфера. См. [$ MyInvocation.MyCommand.Path - $ null в редакторе сценариев PowerGUI] (// stackoverflow.com/a/2990762). Рассмотрим другой способ [Что лучше всего определить местоположение текущего скрипта PowerShell?] (// stackoverflow.com/q/5466329) –