Entspricht dem `source` -Befehl von bash in Powershell?

15

Um ein Bash-Skript zeilenweise auszuführen (um beispielsweise Umgebungsvariablen beizubehalten), gehen Sie wie folgt vor:

$ . myscript.sh

Oder:

$ source myscript.sh

Ich habe ein PowerShell-Skript, das unter anderem den Wert der Eingabeaufforderung über die aufgerufene Funktion festlegt prompt. Durch einfaches Ausführen dieses Skripts (". \ Myscript.ps1") wird die Eingabeaufforderung nicht geändert. Die Funktion wird jedoch Zeile für Zeile als Befehl ausgeführt .

Also, was ich effektiv brauche, ist so etwas wie der sourceBefehl für PowerShell. Ist es möglich?

BEARBEITEN : Sollte dieser Beitrag in Stackoverflow verschoben werden?

Erläuterung 1 : Da ich diese Funktion nur nach Bedarf ausführe (dh nicht für jede Powershell-Sitzung und / oder immer), möchte ich sie nicht in meinem Powershell-Startprofil speichern.

Sridhar Ratnakumar
quelle
Hinweis: Ihre beiden Bash-Befehle sind unterschiedlich. Sie wollten wahrscheinlich nicht den Punkt im zweiten haben, oder Sie wollten, dass beide den Punkt "./" (aktuelles Verzeichnis) am Anfang des Skriptnamens haben.
Bis auf weiteres angehalten.
Behoben (durch Entfernen des Punktes)
Sridhar Ratnakumar

Antworten:

29

Sie können die Punktquelle auch in PowerShell verwenden. Sie müssen nur sicherstellen, dass Sie den vollständigen Pfad angeben. Wenn sich das Skript, das Sie laden möchten, im lokalen Verzeichnis befindet, würden Sie Folgendes tun:

PS C:\>. .\myscript.ps1
zdan
quelle
DAS ist die richtige Antwort :) Dot Sourcing in PowerShell funktioniert ziemlich genau wie in Bash
Jaykul
Ich hatte keine Ahnung, dass Sie das tun könnten. nett.
DaveParillo
Whoa! Wie kommt es, dass ich es vorher nicht ausprobiert habe? :)
Sridhar Ratnakumar
1
Gibt es sowieso dies könnte mit einem vorhandenen Cmd-Skript erfolgen? Hat eine Ausführung eines Cmd-Skripts zur Folge, dass die Powershell-Umgebung geändert wird?
Peabody
1
Was ist, wenn Sie eine .batDatei ausführen und die Umgebung ändern müssen?
Chloe