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 の第一人者は、そのようなコマンドレットを作成する方法を提案できます。