2012-02-16 16 views
7

मेरे पास एक साधारण पीएस स्क्रिप्ट है जिसे एक पैरामीटर को स्वीकार करने की आवश्यकता है जो निर्देशिका के लिए पथ बनती है। मैं इस पथ मेरे लिए सौंप दिया हो और इस प्रकार ps स्क्रिप्ट आह्वान:पावरहेल और एक तर्क के रूप में एक पथ जो डबल-कोट उद्धृत किया गया है

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\" 

मैं पथ के लिए '\' इस स्क्रिप्ट के लिए परम है कि के अलावा नियंत्रित नहीं कर सकते, और यह डबल-कोटेड होना चाहिए पथ में अंतरिक्ष के लिए खाते हैं। तो, क्या मैं के साथ हवा मेरी ps स्क्रिप्ट के अंदर एक चर स्ट्रिंग है:

C:\temp\ctest\logging test"  <<-- error in path! with the double-quote char. :(

मेरा प्रश्न सरल है, मुझे आशा है कि, फिर भी मैं किसी को भी, जो इसे हल किया है, अभी तक पता नहीं लगा सकते। क्या इस परिदृश्य में अंतिम डबल-कोट से बचने के लिए शक्तियों को बताने का कोई तरीका नहीं है?

आपके समय के लिए धन्यवाद, और मुझे शिक्षित करने के लिए धन्यवाद।

उत्तर

3

यह समस्या केवल सीएमडी से आने पर ही दिखती है। आपकी स्क्रिप्ट में आप यह कर सकते हैं:

$args[0].TrimEnd('"') 

यदि कोई मौजूद है तो यह एक पिछला डबल कोट हटा देगा।

या आप बैकस्लैश अप दोगुनी हो सकती है: प्रसंस्करण -File '' C: \ अस्थायी \ ctest \ प्रवेश echo.ps1

Write-Host ('"{0}"' -f $args[0]) 
0

इस तरह का प्रयास करें:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\' 
+0

उस के साथ पी एस से तुरंत वापस लौट के

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\" 

सामग्री परीक्षण \ postinstall.ps1 '' असफल: दिए गए पथ का प्रारूप समर्थित नहीं है। -फाइल पैरामीटर के लिए एक वैध पथ निर्दिष्ट करें। – joebalt

+0

- संपादित करें: डबल कोट भूल गया ... –

+0

सिंगल उद्धरण सब कुछ उत्पन्न करता है: प्रसंस्करण -फाइल 'सी: \ Temp \ ctest \ logging test \ postinstall.ps1' 'असफल: दिया गया पथ का प्रारूप समर्थित नहीं है। -फाइल पैरामीटर के लिए एक वैध पथ निर्दिष्ट करें। – joebalt

0

आप की कोशिश की अपने मंगलाचरण में अपने तर्क एकल के हवाले से है?

+0

ps1 स्क्रिप्ट के पैरामीटर को उद्धृत करते हुए एकल एक त्रुटि उत्पन्न करता है जब हम ps स्क्रिप्ट के अंदर उस पैरामीटर पर dir कमांड करने का प्रयास करते हैं: Get-ChildItem: ड्राइव नहीं मिल सका। नाम 'सी' वाला एक ड्राइव मौजूद नहीं है। – joebalt

संबंधित मुद्दे