Pour accomplir l'équivalent de la syntaxe Unix, vous devez non seulement définir la variable d'environnement, mais vous devez la réinitialiser à sa valeur antérieure après avoir exécuté la commande. J'ai accompli cela pour les commandes courantes que j'utilise en ajoutant des fonctions similaires aux suivantes à mon profil PowerShell.
function cmd_special()
{
  $orig_master = $env:app_master
  $env:app_master = 'http://host.example.com'
  mycmd $args
  $env:app_master = $orig_master
}
Il en mycmdva de même pour certains exécutables qui fonctionnent différemment selon la valeur de la variable d'environnement app_master. En définissant cmd_special, je peux maintenant exécuter à cmd_specialpartir de la ligne de commande (y compris d'autres paramètres) avec la app_mastervariable d'environnement définie ... et elle est réinitialisée (ou même non définie) après l'exécution de la commande.
Vraisemblablement, vous pouvez également effectuer cette opération ad hoc pour une seule invocation.
& { $orig_master = $env:appmaster; $env:app_master = 'http://host.example.com'; mycmd $args; $env:app_master = $orig_master }
Cela devrait vraiment être plus facile que cela, mais apparemment, ce n'est pas un cas d'utilisation facilement pris en charge par PowerShell. Peut-être qu'une version future (ou une fonction tierce) facilitera ce cas d'utilisation. Ce serait bien si PowerShell avait une applet de commande qui ferait cela, par exemple:
with-env app_master='http://host.example.com' mycmd
Peut-être qu'un gourou PowerShell peut suggérer comment écrire une telle applet de commande.