Unix構文と同等の機能を実現するには、環境変数を設定するだけでなく、コマンドの実行後に環境変数を以前の値にリセットする必要があります。私は、PowerShellプロファイルに次のような関数を追加することで、よく使用するコマンドでこれを実現しました。
function cmd_special()
{
$orig_master = $env:app_master
$env:app_master = 'http://host.example.com'
mycmd $args
$env:app_master = $orig_master
}
だから、mycmd
環境変数の値に応じて動作が異なるいくつかの実行可能ファイルがありますapp_master
。定義することでcmd_special
、私は今、実行することができcmd_special
て(他のパラメータを含む)コマンドラインからapp_master
環境変数セット...そしてそれは、コマンドの実行後にリセット(あるいは未設定)を取得します。
おそらく、1回の呼び出しでこのアドホックを実行することもできます。
& { $orig_master = $env:appmaster; $env:app_master = 'http://host.example.com'; mycmd $args; $env:app_master = $orig_master }
これは実際にはこれよりも簡単なはずですが、PowerShellですぐにサポートされるユースケースではないようです。たぶん、将来のバージョン(またはサードパーティの機能)がこのユースケースを容易にするでしょう。PowerShellにこれを実行するコマンドレットがあると便利です。例:
with-env app_master='http://host.example.com' mycmd
おそらく、PowerShellの第一人者が、そのようなコマンドレットの記述方法を提案できるでしょう。