ISE内から展開スクリプトを記述した後、コマンドラインまたはバッチファイルを介してそれらを自動的に実行できるように、継続的インテグレーション(CI)サーバーが必要です。
次の呼び出しの間にいくつかの重要な違いがあることに気づきました。
powershell.exe -File Script.ps1
powershell.exe -Command "& '.\Script.ps1'"
powershell.exe .\Script.ps1
いくつかの簡単な例:
- を使用する場合、エラーはISE
-File
とまったく同じ方法で処理されます。 - 他の2つの呼び出しは変数を無視しているようで、try/catchブロックを
$ErrorActionPreference
キャッチしません。Write-Error
pSakeを使用する場合:
- 最後の2つの呼び出しは完全に機能します
- ISEまたは
-File
パラメーターの使用は、次のエラーで失敗します。
The variable '$script:context' cannot be retrieved because it has not been set
各構文の意味は何ですか、そしてなぜそれらは異なった振る舞いをしているのですか?理想的には、常に機能し、ISEのように動作する構文を見つけたいと思います。