Gibt es eine Möglichkeit, ein Arbeitsverzeichnis für den Start-Job-Befehl anzugeben?PowerShell Start-Job-Arbeitsverzeichnis
Use-Case:
ich in einem Verzeichnis bin, und ich möchte eine Datei Emacs öffnen für die Bearbeitung verwendet wird. Wenn ich das direkt mache, wird PowerShell blockiert, bis ich Emacs schließe. Aber die Verwendung von Start-Job versucht, Emacs aus meinem Home-Verzeichnis auszuführen, so dass Emacs eine neue Datei statt der von mir gewünschten öffnet.
Ich habe versucht, den vollständigen Pfad mit $ pwd anzugeben, aber Variablen im Skriptblock werden nicht aufgelöst, bis sie im Start-Job-Kontext ausgeführt werden. Eine Möglichkeit, das Auflösen der Variablen im Shell-Kontext zu erzwingen, wäre auch eine akzeptable Antwort darauf.
So, hier ist was ich versucht habe, nur der Vollständigkeit halber:
Start-Job { emacs RandomFile.txt }
Start-Job { emacs "$pwd/RandomFile.txt" }
Das funktionierte wirklich gut. Die -ArgumentList ist genau die Art von Dingen, die ich gesucht habe. – jdmichal
Beachten Sie, dass dies nur funktioniert, wenn '$ workingdir' keine Leerzeichen oder andere Sonderzeichen enthält. – DiscoInfiltrator
@DiscoInfiltrator: Die Übergabe von '$ workingdir' funktioniert problemlos in PowerShell, selbst mit eingebetteten Leerzeichen und anderen Shell-Metazeichen (Sie denken wahrscheinlich an POSIX-ähnliche Shells); verifizieren Sie mit '$ dir = 'C: \ Programme \'; Funktion foo() {set-location $ args [0]}; foo $ dir'. – mklement0