次のような一連のコマンドがあるとします。
# 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-Expression
PowerShell のeval
同等の機能である を使用することもできます。これは、プロンプトでコマンドを自分で入力するのとまったく同じです。
Get-Content .\foo.ps1 -Raw | Invoke-Expression
あるいはもっと簡潔に言うと:
gc .\foo.ps1 -raw | iex