Angenommen, ich habe eine Reihe von Befehlen:
# foo.ps1
do-this
do-that
do-something-totally-different
etc.
Als nächstes möchte ich diese nicht mehr in der aktiven Shell schreiben müssen (weil dadurch meine Shell-Umgebung geändert wird). In Bash würde ich daher einfach Folgendes schreiben:
cat foo.ps1 | xargs -I arg eval arg
Oder so etwas in der Art.
Wie erreiche ich denselben Effekt mit Windows Powershell?
Antwort1
Um eine Skriptdatei im aktuellen Bereich statt in einem neuen Bereich auszuführen, verwenden SiePunktbeschaffung:
. .\foo.ps1
Alternativ können Sie verwenden Invoke-Expression
, das Äquivalent von PowerShell eval
. Dies sollte genau dasselbe sein, als würden Sie die Befehle selbst in der Eingabeaufforderung eingeben:
Get-Content .\foo.ps1 -Raw | Invoke-Expression
Oder kürzer:
gc .\foo.ps1 -raw | iex