2012-09-07 4 views
7

एक PowerShell स्क्रिप्ट में, मैं कुछ इस तरह:स्ट्रोक करने के लिए Invoke-Expression के पाइप आउटपुट कैसे करें?

Invoke-Expression "& `"C:\Scripts\psftp.exe`" ftp.blah.com" 

मैं पाइप करना चाहते हैं स्ट्रिंग $output

मैं यह कैसे कर सकते करने के लिए सभी उत्पादन, त्रुटियों आदि इस बात का? मैंने > अंत में $output = ... पर कोशिश की है, लेकिन न ही त्रुटियों और प्रकार को पकड़ने लगते हैं।

उत्तर

12

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

$output = Invoke-Expression "C:\Scripts\psftp.exe ftp.blah.com 2>&1" 

कॉल ऑपरेटर के रूप में इस मामले के बाद से पथ स्थान न हो में exe पथ के हवाले है & अनावश्यक है का उपयोग। यदि पथ में रिक्त स्थान हैं, तो उसे उद्धृत करने की आवश्यकता होगी और फिर आपको कॉल ऑपरेटर का उपयोग करना होगा। उस ने कहा, मुझे यकीन नहीं है कि आपको इस मामले में Invoke-Expression का उपयोग करने की आवश्यकता क्यों है। निम्नलिखित आपके उदाहरण के साथ ही काम करेगा।

$output = C:\Scripts\psftp.exe ftp.blah.com 2>&1 
+0

मैं कमांड प्रॉम्प्ट को स्पर्श नहीं करूँगा (यह स्वचालित हो जाएगा), मैं इसे स्क्रिप्ट के अंदर कैसे कर सकता हूं? – JBurace

+0

वह स्क्रिप्ट है। कमांड प्रॉम्प्ट पर आपके द्वारा टाइप की जाने वाली किसी भी चीज को स्क्रिप्ट में गिराया जा सकता है और स्वचालित रूप से निष्पादित किया जा सकता है। एकमात्र अपवाद जो मैं सोच सकता हूं वो कमांड हैं जिन्हें रीड-होस्ट जैसे उपयोगकर्ता इनपुट की आवश्यकता होती है। इनपुट के लिए इस फैशन प्रॉम्प्ट में psftp.exe निष्पादित करता है? –

+0

मैं जोड़ूंगा कि यह आमतौर पर तारों की एक सरणी वापस कर देगा; यदि आप एक ही स्ट्रिंग के रूप में कब्जा कर लिया गया सभी आउटपुट चाहते हैं, तो कमांड के अंत में "| आउट-स्ट्रिंग" संलग्न करें। – deadlydog

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