2013-06-27 8 views
12

मेरे पास एक पावरहेल स्क्रिप्ट है जो फ़ाइल को पार्स करती है और एक निश्चित पैटर्न का पता लगाने पर एक ईमेल भेजती है। मेरे पास एक फ़ंक्शन के अंदर ईमेल कोड सेटअप है, और जब मैं इसे आईएसई से चलाता हूं तो यह सब ठीक काम करता है, लेकिन मैंने स्क्रिप्ट को सेवा के रूप में चलाने में सक्षम होने के लिए PS2EXE का उपयोग किया लेकिन यह "ईमेल" फ़ंक्शन को पहचान नहीं पाया। मेरे कोड इसपावरहेल स्क्रिप्ट मेरे फ़ंक्शन को पहचान नहीं रहा

#Do things | 
foreach{ 
    email($_) 
} 

function email($text){ 
    #email $text 
} 

के समान दिखता है जब मैंने इसे परिवर्तित exe और इसे चलाने मैं यह त्रुटि मिलना: आदेश (ऊपर से नीचे) में

The term 'email' is not recognized as teh name of a cmdlet, function, script file, 
or operable program. Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again. 

उत्तर

22

Powershell प्रक्रियाओं इतना समारोह परिभाषा की जरूरत है इससे पहले समारोह कॉल:

function email($text){ 
    #email $text 
} 

#Do things | 
foreach{ 
    email($_) 
} 

यह शायद आईएसई में ठीक काम करता है, क्योंकि आप एक पूर्व रन या परीक्षण से अभी भी स्मृति में समारोह परिभाषा नहीं है।

+0

धन्यवाद यह अब काम करता है! – laitha0

0

यह कार्य करते-कॉल की बात आती है, PowerShell निम्न तरीकों से अन्य प्रोग्रामिंग भाषाओं से काफी अलग है:

  1. जब एक समारोह के लिए तर्क गुजर, कोष्ठक अनुमति नहीं दी जाती है (और में एक पार्स त्रुटि को जन्म देती है यदि सेट-स्ट्रीटीमोड-2.0 या उससे ऊपर/नवीनतम पर सेट किया गया है), हालांकि, एक विधि को कॉल करने के लिए अभिभावक तर्कों का उपयोग किया जाना चाहिए, जो या तो .NET विधि या उपयोगकर्ता परिभाषित विधि हो सकती है (एक कक्षा के भीतर परिभाषित) पीएस में 5.0 या ऊपर)।
  2. पैरामीटर अंतरिक्ष से अलग हैं और अल्पविराम से अलग नहीं हैं।
  3. सावधानी बरतें जहां आप फ़ंक्शन को परिभाषित करते हैं। PowerShell क्रमिक रूप से पंक्ति-दर-पंक्ति ऊपर से नीचे के क्रम में संसाधित करता है के रूप में, इसलिए समारोह से पहले ललकारा किया जाना चाहिए समारोह कहा जाता है:

    Function func($para1){ 
          #do something 
        } 
        func("arg1") #function-call 
    

आईएसई में, समारोह समारोह-कॉल नीचे परिभाषित कर सकते हैं काम के रूप में दिखाई देते हैं लेकिन (सावधान रहें) यह पिछली दौड़ से स्मृति में कैश की गई फ़ंक्शन परिभाषा है, इसलिए यदि आपने फ़ंक्शन को अपडेट किया है तो आप खराब हो गए हैं।

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