В моем профиле есть следующий фрагмент скрипта PowerShell:
. (join-path (split-path (& { $myInvocation.ScriptName })) "export-errors.ps1")
Теперь я понимаю, что это приводит к выполнению скрипта export-errors.ps1
, который существует в том же каталоге, что и скрипт моего профиля.Мой вопрос: почему?
Я не понимаю, почему конструкция & { xxx }
отличается от xxx
в этом случае.Я пытался использовать эту похожую конструкцию:
$lame = join-path (split-path $myinvocation.mycommand.definition) "_lame\lame.exe"
Однако это не работает.Я получаю сообщения о том, что провайдеры не существуют, и я не совсем понимаю, почему.
Почему первая конструкция работает, а вторая нет?
ОБНОВЛЕНИЕ
Мне стало ясно, что я преследовал не ту ошибку.Действительно, обе конструкции работают при определенных условиях.Условие, при котором я выполнял вторую конструкцию, - это условие, при котором НИ ОДНА не работает.Я опубликую отдельный вопрос по этому вопросу.
Кит почти наверняка прав, когда говорит, что первая конструкция - это попытка обойти определенные странности.Это была копия-вставка из долгого времени назад.