Щоб виконати еквівалент синтаксису 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
набором змінної середовища ... і він буде скинутий (або навіть знятий) після виконання команди.
Імовірно, ви також можете зробити це тимчасово для однієї виклику.
& { $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 може підказати, як можна написати такий командлет.