Windows Powershell: оценка серии команд в активной оболочке

Windows Powershell: оценка серии команд в активной оболочке

Предположим, у меня есть ряд команд:

# foo.ps1
do-this
do-that 
do-something-totally-different
etc.

Далее, я хочу избавиться от необходимости писать это в активной оболочке (потому что это изменяет мою среду оболочки), поэтому в bash я бы просто написал:

cat foo.ps1 | xargs -I arg eval arg

Или что-то вдоль этих линий.

Как добиться того же эффекта с помощью Windows PowerShell?

решение1

Чтобы запустить файл скрипта в текущей области, а не в новой, используйтеточка-сорсинг:

. .\foo.ps1

В качестве альтернативы вы можете использовать эквивалент Invoke-ExpressionPowerShell eval, что будет точно таким же, как если бы вы ввели команды в командной строке самостоятельно:

Get-Content .\foo.ps1 -Raw | Invoke-Expression

Или более кратко:

gc .\foo.ps1 -raw | iex

Связанный контент