Untuk mencapai padanan sintaks Unix, Anda tidak hanya harus mengatur variabel lingkungan, tetapi Anda harus mengatur ulang ke nilai semula setelah menjalankan perintah. Saya telah menyelesaikan ini untuk perintah umum yang saya gunakan dengan menambahkan fungsi yang mirip dengan berikut ini ke profil PowerShell saya.
function cmd_special()
{
$orig_master = $env:app_master
$env:app_master = 'http://host.example.com'
mycmd $args
$env:app_master = $orig_master
}
Begitu mycmd
juga beberapa executable yang beroperasi secara berbeda tergantung pada nilai variabel lingkungan app_master
. Dengan mendefinisikan cmd_special
, saya sekarang dapat mengeksekusi cmd_special
dari baris perintah (termasuk parameter lain) dengan app_master
variabel lingkungan set ... dan itu akan direset (atau bahkan tidak disetel) setelah eksekusi perintah.
Agaknya, Anda juga bisa melakukan ad-hoc ini untuk satu doa.
& { $orig_master = $env:appmaster; $env:app_master = 'http://host.example.com'; mycmd $args; $env:app_master = $orig_master }
Seharusnya lebih mudah dari ini, tetapi tampaknya ini bukan kasus penggunaan yang sudah didukung oleh PowerShell. Mungkin versi yang akan datang (atau fungsi pihak ketiga) akan memfasilitasi kasus penggunaan ini. Alangkah baiknya jika PowerShell memiliki cmdlet yang akan melakukan ini, misalnya:
with-env app_master='http://host.example.com' mycmd
Mungkin seorang guru PowerShell dapat menyarankan bagaimana seseorang dapat menulis cmdlet semacam itu.