यूनिक्स सिंटैक्स के बराबर को पूरा करने के लिए, आपको न केवल पर्यावरण चर सेट करना होगा, बल्कि कमांड निष्पादित करने के बाद आपको इसे अपने पूर्व मूल्य पर रीसेट करना होगा। मैंने इसे अपने 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 में एक cmdlet था जो यह करेगा, जैसे:
with-env app_master='http://host.example.com' mycmd
शायद एक PowerShell गुरु सुझाव दे सकता है कि कोई ऐसे cmdlet कैसे लिख सकता है।