Существует ли способ указать рабочий каталог к команде Start-Job?
Пример использования:
Я нахожусь в каталоге, и я хочу открыть использование файла Emacs для редактирования. Если я сделаю это непосредственно, то это заблокирует PowerShell, пока я не закрою Emacs. Но использование Начинать-задания пытается выполнить Emacs из моего корневого каталога, таким образом имение Emacs открывает новый файл вместо того, который я хотел.
Я пытался указать полный путь с помощью $pwd, но переменные в блоке сценария не разрешены, пока они не выполняются в контексте Начинать-задания. Таким образом, некоторым способом вызвать разрешение переменных в контексте оболочки также был бы приемлемый ответ на это.
Так, вот то, что я попробовал, только для полноты:
Start-Job { emacs RandomFile.txt }
Start-Job { emacs "$pwd/RandomFile.txt" }
Возможным решением будет создание "kicker-script":
Start-Job -filepath .\emacs.ps1 -ArgumentList $workingdir, "RandomFile.txt"
Ваш скрипт будет выглядеть так:
Set-Location $args[0]
emacs $args[1]
Надеюсь, это поможет.
Для полноты картины, вот последний сценарий, который я реализовал на основе ответа Филбурта в стиле вики-сообщества:
function Start-Emacs ( [string]$file )
{
Start-Job -ArgumentList "$pwd\$file" { emacs $args[0] }
}