• 0

تنفيذ ملف سكريبت PowerShell بإستخدام Node.js

لدي سكريب Powrshell على نفس السيرفر الذي أستخدم عليه Node.js وأريد تنفيذ هذا السكريبت
قمت بالبحث ووجدت أنه يمكنني تنفيذ ذلك بإستخدام "child_process" ولكنني لا أعلم ماهو "child_process" وكيف يمكنني إستخدامه لتنفيذ سكريبت powershell داخل Node.js.
فهل يمكنكم المساعدة ؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

تمكّننا وحدة child_process من الوصول إلى وظائف نظام التشغيل عن طريق تشغيل أي أمر نظام داخل عملية فرعية 

و كما هو معروف فان النود هو Single Thread (ذو ترابط واحد فقط ) لذلك يمكننا تعزبز وضع عمل النود على الجهاز من خلال إستخدام مصادر الجهاز أو السيرفير مباشرة حيث يمكن إستخدام هذه الطريقة لعمل أوامر مباشرة عن طريق ال shell او  command line للسيرفير و يمكنك من خلالها إجراء أي أمر بإستخدام واجهة الاوامر الكتابية Command Line

و هنا مثال بسيط يمكنك من خلاله القيام بهذه العملية 

// تعريف لوحة اوامر 
const { exec } = require('child_process');

// هنا تقوم بتمرير الامر الى لوحة الاوامر و تنفيذها 
//  هذه امر بسيط للبحث 
exec('find . -type f | wc -l', (err, stdout, stderr) => {
  if (err) {
    console.error(`exec error: ${err}`);
    return;
  }

  console.log(`Number of files ${stdout}`);
});

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

إن Node.js تعمل بأسلوب المسلك الواحد single-threaded, non-blocking performance وهذا غير كافي لاتمام عمليات المعالجة الضخمة و الكثيرة.

إن كل برنامج يتمثل في نظام التشغيل بعملية process تكون منفصلة في البيانات و الشيفرة البرمجية، ولكن مع تطور أنظمة التشغيل أصبحت المعالجات تدعن تعدد العمليات المتزامنة، لذلك ظهرت خاصية child process والتي هي نسخة من العملية الأب لكنها تعمل بجزء مختلف من الشيفرة البرمجية حيث تتواصل هذه العمليات عن طريق built-in messaging system.

لتنفيذ ملف أو سكربت سوف نقوم بتضمين المكتبة Child Processes: ثم يتم تمرير مسار الملف مع المعاملات من خلال الدالة exec:

const { exec } = require('child_process');

exec('"/path/to/file file.sh" arg1 arg2');

نمرر سلسلة نصية تحوي مسار الملف مع اسمه 
ثم الوسطاء أو البيانات

طريقة أخرى:

const { exec } = require('child_process');
exec('الأمر الذبي نريد تنفيذه', 
     {'shell':'powershell.exe'},
     (error, stdout, stderr)=> {
    // السكربت
})

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك استخدام هذا الكود لتنفيذ سكريبت الPowershell بإستخدام عملية فرعية child_process والاستماع لل stdout لمخرجات الأمر ولل stderr للأخطاء

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(); //إنهاء الإدخال

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن