2012-04-16 26 views
18

मैं वेब और स्टैक ओवरफ्लो पर देख रहा हूं लेकिन इस प्रश्न का उत्तर नहीं मिला। आप Node.js से पावरशेल स्क्रिप्ट कैसे निष्पादित करेंगे? स्क्रिप्ट उसी सर्वर पर है जो Node.js उदाहरण के रूप में है।Node.js से पावरशेल स्क्रिप्ट निष्पादित करें

उत्तर

43

तुम सिर्फ एक बच्चे की प्रक्रिया "PowerShell.exe" अंडे और आदेश उत्पादन और त्रुटियों के लिए stderr के लिए stdout सुन सकते हैं:

var spawn = require("child_process").spawn,child; 
child = spawn("powershell.exe",["c:\\temp\\helloworld.ps1"]); 
child.stdout.on("data",function(data){ 
    console.log("Powershell Data: " + data); 
}); 
child.stderr.on("data",function(data){ 
    console.log("Powershell Errors: " + data); 
}); 
child.on("exit",function(){ 
    console.log("Powershell Script finished"); 
}); 
child.stdin.end(); //end input 
+0

बिल्कुल सही। सहायता के लिए आपका बहुत - बहुत धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। बेकार ढंग से काम किया। –

+3

मुझे पता है कि यह पुराना है लेकिन क्या पावरहेल व्यवस्थापक अनुमतियों के साथ चलाया जा सकता है? – Vandervidi

+0

http://serverfault.com/a/464024/202283 – digitalextremist

10

स्वीकार किए जाते हैं जवाब के अलावा, वहाँ एक Node.js लाइब्रेरी कहा जाता है Edge.js जो नोड के भीतर से विभिन्न langugages निष्पादित करने की अनुमति देता है। सी #, जे #, नेट, एसक्यूएल, पायथन, PowerShell और अन्य सीएलआर भाषाओं सहित।

ध्यान दें कि Edge.js को PowerShell 3.0 & केवल Windows पर काम करता है (कई अन्य सुविधाएं मैक और लिनक्स पर भी काम करती हैं)।

6

यह विकल्प मेरे लिए काम करता है, जब स्क्रिप्ट पहले से मौजूद नहीं है, लेकिन आप कुछ आदेशों को गतिशील रूप से उत्पन्न करना चाहते हैं, उन्हें भेजना और नोड पर परिणामों के साथ काम करना चाहते हैं।

var PSRunner = { 
    send: function(commands) { 
     var self = this; 
     var results = []; 
     var spawn = require("child_process").spawn; 
     var child = spawn("powershell.exe", ["-Command", "-"]); 

     child.stdout.on("data", function(data) { 
      self.out.push(data.toString()); 
     }); 
     child.stderr.on("data", function(data) { 
      self.err.push(data.toString()); 
     }); 

     commands.forEach(function(cmd){ 
      self.out = []; 
      self.err = []; 
      child.stdin.write(cmd+ '\n'); 
      results.push({command: cmd, output: self.out, errors: self.err}); 
     }); 
     child.stdin.end(); 
     return results; 
    }, 
}; 

module.exports = PSRunner; 
2

या आप केवल Node-PowerShell का उपयोग कर सकते हैं।

नोड-पावरशेल आज के प्रौद्योगिकी दुनिया में मौजूद सबसे सरल, प्रभावी और आसान टूल का लाभ उठा रहा है। एक ओर, नोडजेएस ने जावास्क्रिप्ट की दुनिया में एक क्रांति की, और दूसरी ओर, पावरशेल जो हाल ही में प्रारंभिक ओपन-सोर्स, क्रॉस-प्लेटफ़ॉर्म संस्करण के साथ बाहर आया, और उन्हें एक साथ जोड़कर, आपको शक्ति देता है कोई समाधान जो आपसे पूछा गया था, कोई फर्क नहीं पड़ता कि आप प्रोग्रामर हैं, आईटी या डेवॉप्स लड़के हैं।

+2

स्टैक ओवरफ़्लो में आपका स्वागत है! समाधान के लिए एक लिंक का स्वागत है, लेकिन कृपया सुनिश्चित करें कि आपका उत्तर इसके बिना उपयोगी है: [लिंक के चारों ओर संदर्भ जोड़ें] (// meta.stackexchange.com/a/8259) ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चल जाएगा कि यह क्या है और यह वहां क्यों है, फिर लक्ष्य पृष्ठ अनुपलब्ध होने पर आप जिस पृष्ठ से लिंक कर रहे हैं उसके सबसे प्रासंगिक भाग को उद्धृत करें। [उत्तर जो किसी लिंक से थोड़ा अधिक हटाए जा सकते हैं।] (// stackoverflow.com/help/deleted-answers) – FelixSFD

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