2009-11-26 12 views
5

मैं एक बैच फ़ाइल test.bat एक powershell स्क्रिप्ट शुरू कर दिया है शुरू करने के लिए:उपयोग बल्ले PowerShell स्क्रिप्ट

# just print out the arguments 
Write-Output ("args count: {0}" -f $args.length) 
$args 

फिर मैंने test.bat शुरू करने का प्रयास किया। मैं तीन तर्कों PS1 के लिए पारित किया जाना चाहिए, लेकिन मैं निम्नलिखित परिणाम मिला:

आर्ग गिनती: 5 ARG1 ARG2 अंतरिक्ष arg3 साथ

क्या मैं स्क्रिप्ट में उम्मीद, args [0] ARG1 चाहिए और तर्क [1] "अंतरिक्ष के साथ arg2" होना चाहिए और args3 [2] arg3 होना चाहिए। मुझे समझ में नहीं आ रहा है कि लिपि वास्तव में 5 तर्क क्यों प्राप्त करती है।

मैं सीएमडी या बैच से पावरहेल से पैरामीटर कैसे पास कर सकता हूं जैसा कि मैंने अपेक्षित था? इस तरह:

args count: 3 
arg1 
arg2 with space 
arg3 

उत्तर

7
powershell .\test.ps1 arg1 'arg2 with space' arg3 

या

powershell .\test.ps1 arg1 """arg2 with space""" arg3 

मुझे लगता है कि आप के रूप में cmd ​​पहले से ही उन्हें भी उपयोग करता है और इसलिए यह वास्तव में क्या PowerShell मिल जाएगा भविष्यवाणी करने के लिए एक छोटे से मुश्किल है दोहरे उद्धरण चिह्नों का उपयोग कर से बचने के लिए प्रयास करना चाहिए । याद रखें कि यह दो गोले के माध्यम से गुजरता है और इसलिए भागने/उद्धरण के दो परतें।

पावरशेल स्वयं एकल और डबल कोट्स के बीच एक भेद नहीं करता है। कम से कम इस संदर्भ में अंतर अप्रासंगिक है।

0

ठीक है। मुझे लगता है कि मुझे मिल गया:

@pushd "C: \ myscripts"। powershell arg3 @popd

एकल उद्धरण चार के बजाय डबल एक 'अंतरिक्ष के साथ ARG2' \ test.ps1 ARG1। शायद वे पीएस में अलग बात का मतलब है।

+0

वे नहीं करते हैं। लेकिन वे 'cmd' के लिए अलग-अलग चीजों का मतलब है। – Joey

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