Unix sözdiziminin eşdeğerini başarmak için, yalnızca ortam değişkenini ayarlamanız gerekmez, aynı zamanda komutu çalıştırdıktan sonra onu eski değerine sıfırlamanız gerekir. Bunu, PowerShell profilime aşağıdakine benzer işlevler ekleyerek kullandığım yaygın komutlar için başardım.
function cmd_special()
{
$orig_master = $env:app_master
$env:app_master = 'http://host.example.com'
mycmd $args
$env:app_master = $orig_master
}
Yani mycmd
ortam değişkeninin değerine bağlı olarak farklı çalışır bazı çalıştırılabilir olduğunu app_master
. Tanımlayarak cmd_special
, artık cmd_special
komut satırından (diğer parametreler dahil)app_master
ortam değişkeni setiyle ... ve komutun çalıştırılmasından sonra sıfırlanır (veya hatta ayarlanamaz).
Muhtemelen, bunu tek bir çağrı için anlık olarak da yapabilirsiniz.
& { $orig_master = $env:appmaster; $env:app_master = 'http://host.example.com'; mycmd $args; $env:app_master = $orig_master }
Gerçekten bundan daha kolay olmalı, ancak görünüşe göre bu PowerShell tarafından kolayca desteklenen bir kullanım durumu değil. Belki gelecekteki bir sürüm (veya üçüncü taraf işlevi) bu kullanım durumunu kolaylaştıracaktır. PowerShell'in bunu yapacak bir cmdlet'i olması güzel olurdu, örneğin:
with-env app_master='http:
Belki bir PowerShell gurusu böyle bir cmdlet'in nasıl yazılabileceğini önerebilir.