मैं पावरशेल में कई W2k3 सर्वरों पर खाली स्थान के साथ अपने 8.3 समकक्षों को रिक्त स्थान के साथ कुछ पथों को परिवर्तित करने के लिए पैथ को ट्विक कर रहा हूं।PowerShell से सेट करते समय मैं Windows PATH चर विस्तार कैसे संभाल सकता हूं?
# Set the path for this process
$env:PATH = $path
# Set the path for the Machine
[System.Environment]::SetEnvironmentVariable('PATH', $path,[System.EnvironmentVariableTarget]::Machine)
उन्हें चलाने के बाद, पथ तरीके मैं इरादा नहीं था में बदल गई है: कई regex परिवर्तनों के बाद, मैं निम्नलिखित दो आदेशों को चलाने के। % SystemRoot% समान रूप से C: \ Windows में विस्तारित है। मैं नहीं देख सकता कि यह सर्वनाश को कहां सिग्नल करता है, लेकिन मैं% SystemRoot% को रखना चाहता हूं, इसलिए जब तक मुझे पथ में% SystemRoot% दिखाई नहीं देता तब तक मैं झुका हुआ था, लेकिन जब मैं पथ नहीं करता तो अब विस्तार नहीं करता है और अब नहीं काम करता है। सीएलआई पर पथ को प्रतिबिंबित करने से एक अनपेक्षित स्ट्रिंग (यह गलत है) और सिस्टम रूट में कमांड नहीं मिल सकते हैं।
यदि मैं पाथ में किसी भी अन्य पाठ को बदलने के बिना पथ ";;" में एक शून्य प्रविष्टि जोड़ता हूं, तो यह सही तरीके से काम करना शुरू कर देता है।
तो मेरा सवाल यह है कि पावरशेल का उपयोग करके प्रोग्रामेटिक रूप से पथ को कैसे बदला जाए ताकि पथ के भीतर परिवर्तनीय विस्तार को अपनाना न पड़े?
2 नोट्स: 1) मैं प्रत्येक परीक्षण के लिए एक नया सीएलआई खोलता हूं, और 2) जिस पथ को मैं $ env से पढ़ता हूं: पथ बढ़ाया जाता है, इसलिए मैं c: \ windows पढ़ रहा हूं और मैन्युअल रूप से% SystemRoot को बदल रहा हूं % फिर उस मान को पर्यावरण पर वापस धक्का दे रहा है। – codepoke
जब आप इसे 'पथ' पर सेट कर रहे हैं तो '$ पथ' में क्या है? – manojlds
यह प्रत्येक सर्वर पर अलग है, लेकिन ...;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0; ... सभी पर एक घटक है उनमें से। जब मैं $ पथ पढ़ता हूं, तो इसे पढ़ने की प्रक्रिया के दौरान c: \ Windows में विस्तारित किया जाता है। मुझे इसे विस्तारित करने के पहले विस्तारित मान को इसके परिवर्तनीय समकक्ष के साथ-साथ स्थानांतरित करना होगा। वैरिएबल के साथ वह $ पथ मान तब तक विस्तारित नहीं होगा जब तक कि मैं इसे गुण संवाद के माध्यम से मैन्युअल रूप से स्पर्श नहीं करता। – codepoke