Frage

Ich schreibe einen PowerShell CMDLet. Aus meiner CMDLET beginprocessing () -Methode möchte ich in der Lage sein, das Verzeichnis abzurufen, das zum Zeitpunkt des Aufrufens des CMDLET das Standardverzeichnis war.

Beispiel: Wenn der Benutzer dies tut:

cd \myDirectory
invoke-mycmdlet

Ich möchte, dass mein Code weiß, dass das Standard -Shell -Verzeichnis C: myDirectory war. Wenn ich auf die Umgebung zugreifen kann.

Ich habe einen ähnlichen Beitrag auf so gesehen, wo das Poster für das Setzen von Umgebungen :: aktuelles Verzeichnis aus der Shell mit Get Location benötigt wird. Das wird für mich nicht funktionieren.

Grundsätzlich macht mein CMDLET einige Dateisystem -Sachen, und ich möchte, dass der Benutzer nur in ein Verzeichnis CD in ein Verzeichnis ausführt und mein CMDLET ausführen kann, wobei es auf dem Verzeichnis arbeitet, in das sie umgestellt wurden - genau wie Sie es erwarten würden, wenn Sie es erwarten würden Arbeiten Sie aus der alten Befehlskonsole.

War es hilfreich?

Lösung

Möglicherweise möchten Sie dies stattdessen versuchen, CurrentLocation.Path könnte auch auf andere Anbieterpfade wie das Register verweisen.

this.SessionState.Path.CurrentFileSystemLocation.Path

Andere Tipps

Weißt du, ich scheine es immer gleich nach dem Posten zu finden - unabhängig davon, wie lange ich mich angesehen habe, bevor ich nach so griff!

Mein CMDLet erbt also von PSCMDLet. Ich fand heraus, dass ich den Weg bekommen konnte, von dem ich wollte, von dem ich wollte

this.SessionState.Path.CurrentLocation.Path

(Wo "dies" eine CMDLet -Klasse ist, die von PSCMDLet erbt)

Versuchen Sie das Get-Location cmdlet. Es sollte der aktuelle Ausführungsort des Skripts und nicht der PowerShell -Host -Startordner sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top