मुझे आशा है कि शीर्षक संक्षिप्त है, लेकिन सिर्फ मामले में:बैच से PowerShell को कॉल करना, और स्क्रिप्ट में अस्थायी वातावरण परिवर्तनीय सेट के नए मान को पुनर्प्राप्त करना?
मैं एक बैच फ़ाइल से एक PowerShell स्क्रिप्ट बोल रहा हूँ। मैं PowerShell स्क्रिप्ट को पर्यावरण चर के मान को सेट करने के लिए चाहता हूं, और PowerShell स्क्रिप्ट समाप्त होने पर उस नए मान को बैच फ़ाइल में उपलब्ध होना चाहिए।
मुझे पता है कि PowerShell में $ env का उपयोग करके पर्यावरण चर सेट करना संभव है, लेकिन PowerShell स्क्रिप्ट समाप्त होने पर मान जारी नहीं रहता है। मुझे लगता है कि यह शायद इसलिए है क्योंकि PowerShell को एक अलग प्रक्रिया में निष्पादित किया जाता है।
मुझे पता है कि मैं एक निकास कोड वापस कर सकता हूं और% ErrorLevel% का उपयोग कर सकता हूं, लेकिन यह केवल मुझे संख्या देगा, और एक संघर्ष होगा, क्योंकि 1 उपयोगी संख्या के बजाय PowerShell अपवाद को इंगित करता है।
अब, यहां चेतावनी है: मैं पर्यावरण चर को जारी रखना नहीं चाहता हूं। यही है, मैं नहीं चाहता कि इसे उपयोगकर्ता या सिस्टम के लिए परिभाषित किया जाए, और इसलिए मैं बैच फ़ाइल से बाहर निकलने के बाद इसे अनुपलब्ध होना चाहता हूं। आखिरकार, मैं केवल PowerShell स्क्रिप्ट से कॉलिंग बैच फ़ाइल में परिणामों को संवाद करना चाहता हूं।
क्या यह संभव है?
अग्रिम धन्यवाद :)
निक
अच्छा समाधान। मुझे संदेह है कि कोई दूसरा ऐसा है जो इतना आसान और सीधा है। – stej
प्रतिक्रिया के लिए धन्यवाद, लेकिन मुझे नहीं लगता कि उपर्युक्त काम करेगा? इस मामले में मैं क्या होने की उम्मीद करूंगा कि पर्यावरण चर 'डी' का मूल्य 'powerhell -noprofile' और {get-date} "होगा। आईई: अभिव्यक्ति के दाहिने तरफ की सामग्री का मूल्यांकन नहीं किया जाता है। –
@ निकोलस, आप सही हैं। मैंने अभी कोशिश की है और वास्तव में चर में केवल स्ट्रिंग संग्रहित है। – stej