كيفية إنشاء خدمة Windows

تحتاج أحيانًا إلى تطبيق أو برنامج نصي لمواصلة العمل سواء قمت بتسجيل الدخول إلى جهاز الكمبيوتر الخاص بك أم لا. ربما يكون برنامجًا نصيًا PowerShell لمراقبة المنافذ(PowerShell script to monitor ports) أو خادم ويب يستضيف صفحة على شبكتك المنزلية(web server hosting a page on your home network) .

النقطة المهمة هي أنه إذا كنت تريد تشغيل عملية أو نص برمجي أو برنامج طالما كان الكمبيوتر قيد التشغيل ، فستحتاج إلى إنشاء خدمة Windows(Windows Service) .

ما الذي أحتاجه لإنشاء خدمة Windows؟(What Do I Need to Create a Windows Service?)

لإنشاء خدمة Windows في Windows 10 ، هناك بعض المتطلبات الأساسية: 

  • وصول المسؤول(Administrator) على الكمبيوتر
  • شيء لتشغيله كخدمة ( PowerShell Script ، البرنامج ، إلخ.)
  • تم تثبيت مدير خدمة(Service Manager) عدم الامتصاص ( NSSM )

ما هو مدير خدمة عدم مص؟(What Is the Non-Sucking Service Manager?)

نعم ، لا يمكنك إسقاط اسم كهذا دون شرحه. من المؤكد أن الاسم مؤسف ، لكنه دقيق. يمكن القول إن إدارة خدمة Non-Sucking Service Manager ( NSSM ) هي أسهل طريقة لإنشاء خدمة Windows تكون موثوقة للغاية وقابلة للتكوين. بالإضافة إلى أنه برنامج مجاني ومفتوح المصدر(Open Source Software) (OSS).

يمكن استخدام NSSM من خلال موجه أوامر Windows(Windows Command Prompt) ، أو واجهة مستخدم رسومية ( GUI ). هذا يعني أنه يمكن لأي شخص استخدامه. يمكن استخدام NSSM على أي إصدار من Windows يعود إلى Windows 2000 ويتضمن ذلك . هناك إصدارات 32 بت و 64 بت(32-bit and 64-bit) . إذا كنت تستخدم جهاز كمبيوتر 64 بت ، فجرب هذا الإصدار أولاً. إذا لم ينجح الأمر ، فارجع إلى الإصدار 32 بت. 

يمكنك تنزيل NSSM من موقع الويب(download NSSM from the website) أو استنساخ NSSM من Git(clone NSSM from Git) أو تثبيت NSSM مع Chocolatey(install NSSM with Chocolatey) . Chocolatey هو مدير حزم لنظام Windows(Chocolatey is a package manager for Windows) . تختلف طرق التثبيت(Installation) حسب المسار الذي تسلكه. يرجى(Please) الرجوع إلى تعليمات NSSM . على سبيل المثال ، نقوم بالتنزيل من موقع NSSM وتثبيته في C:\WINDOWS\system32 .

قم بإنشاء خدمة Windows مع NSSM(Create a Windows Service With NSSM)

في هذا المثال ، سننشئ خدمة من نص برمجي PowerShell(PowerShell script) لتسجيل متوسط ​​نسبة تحميل وحدة المعالجة المركزية(CPU average load percentage)

  1. انسخ هذا البرنامج النصي واحفظه كـ log-CPULoadPercentage.ps1 إلى مكان لا يحتمل أن يتمكن أي شخص آخر من الوصول إليه. حاول إنشاء الدليل C:/Scripts وتخزينه هناك. أيضًا ، قم بإنشاء مجلد في البرامج النصية(Scripts) يسمى السجلات(Logs) . لاحظ أن المسار إلى البرنامج النصي هو C:/Scripts/log-CPULoadPercentage.ps1 . ستحتاج ذلك لاحقًا.

ملاحظة(Note) : جميع الأسطر أدناه متبوعة بالرمز # هي تعليقات ولن تؤثر على النص.

CLS #Optional. I like to use this to clear the terminal when testing.

#Make sure you have a folder called Logs in the same directory as this script
#The log is where the records will be stored.
Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append

#While loop keeps it running until manually stopped
While ($True){
     #Creates a timestamp to know when the measurement was taken
     $timeStamp = get-date -f yyyy-MM-h:mm:ss

     #Gets the average load percentage at that time, then waits 5 seconds to do it again.
     $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5

     #Isolates just the average so there isn't a weird @{Average=13} string
     $cpuLoadPercent = $cpuLoadPercent.Average

     #writes results to screen, or in this case to the log
     Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent"
}

Stop-Transcript
  1. يمكن القيام بذلك في موجه أوامر Windows(Windows Command Prompt) أو PowerShell. افتحه كمسؤول(Open it as Administrator) .
  2. أدخل الأمر nssm install logCPUAvg وقم بتشغيله. سيتم فتح نافذة مثبت خدمة NSSM .(NSSM service installer)

  1. انقر فوق(Click) زر علامات الحذف بجوار المسار:(Path:) الحقل ، وانتقل إلى Powershell.exe الموجود عادةً في C:\Windows\System32\ . حدد powerhell.exe. المسار :(Path:) ودليل بدء التشغيل:(Startup directory:) سيتم ملء الحقول تلقائيًا.

  1. أدخل ما يلي في الوسيطات :(Arguments:) الحقل: -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” ، حيث يكون الجزء الأخير هو المسار إلى برنامج PowerShell النصي واسم البرنامج النصي.  

  1. حدد علامة التبويب " التفاصيل(Details) " . أدخل ما تريد أن تظهره الخدمة كما هو الحال في مدير خدمات (Services)Windows في حقل اسم العرض :. (Display name: )بعد ذلك ، أدخل ما يفعله في حقل الوصف :. (Description:)نوع بدء التشغيل:(Startup type: ) يمكن تعيينه على أنه تلقائي(Automatic) أو تلقائي (بدء مؤجل)(Automatic (Delayed Start)) أو يدوي(Manual) أو معطل(Disabled) . بالنسبة لهذا التمرين ، يعد الوضع التلقائي(Automatic) جيدًا.

  1. حدد علامة التبويب تسجيل الدخول . (Log on )حدد هذا الحساب(This account) : زر الاختيار وأدخل الحساب وكلمة المرور اللذين سيتم تشغيل الخدمة بهما. ستحتاج إلى اختيار الحساب الذي سيتم تشغيل الخدمة تحته. من الناحية المثالية ، سيكون لديك حساب Windows تم إنشاؤه لتشغيل هذه الخدمة فقط. يجب أن تقتصر أذونات هذا الحساب على ما تحتاجه الخدمة فقط. يمكنك اختيار حساب النظام المحلي(Local System account) ، لكن لا يوصى بذلك لأسباب أمنية.

هناك العديد من علامات التبويب الأخرى التي يمكن استخدامها لتخصيص الخدمة. بالنسبة لهذا التمرين ، فإن القيم الافتراضية في علامات التبويب هذه كافية. حدد زر خدمة التثبيت .(Install service )

  1. عند تثبيت الخدمة ، سترى Service “logCPUAvg” installed successfully! نافذة او شباك. حدد " موافق(OK) " لإغلاقه. بهذا تنتهي عملية التثبيت.

  1. افتح مدير خدمات Windows وتأكد(Windows Services Manager ) من وجود الخدمة.

  1. قم بتشغيل(Run) الخدمة للتأكد من أنها ستعمل.

  1. للتحقق من تشغيل هذه الخدمة ، استخدم File Explorer للانتقال إلى المكان الذي من المفترض أن يتم حفظ السجل فيه لمعرفة ما إذا كان موجودًا أم لا.

nssm-check-log.png

إزالة خدمة Windows مع NSSM(Removing a Windows Service With NSSM)

ربما لا تحتاج إلى مراقبة(monitor your CPU) حمل وحدة المعالجة المركزية الخاصة بك بعد الآن ، لذلك ترغب في التخلص من الخدمة. لحسن الحظ ، فإن NSSM(NSSM) تجعل ذلك سهلاً. 

  1. في Windows Services Manager ، قم بإيقاف الخدمة. قم بذلك عن طريق تحديد خدمة Log CPU Average Load ثم إما تحديد زر الإيقاف المربع في شريط الأدوات أو رابط إيقاف الخدمة(Stop the service) على الجانب الأيسر.

  1. افتح إما موجه أوامر Windows(Windows Command Prompt ) أو PowerShell كمسؤول.
  2. أدخل الأمر nssm remove logCPUAvg وقم بتنفيذ الأمر. 

  1. سيطلب منك NSSM(NSSM) التأكيد. حدد نعم(Yes) .

  1. عند إزالة الخدمة ، سترى Service “logCPUAvg” removed successfully! تأكيد. حدد " موافق(OK) " والانتهاء من ذلك.

هذا كل شئ. إنها لفكرة جيدة أن تتحقق من مدير الخدمات للتأكد من أن الخدمة لم تعد موجودة. إذا كنت لا تزال ترى الخدمة ، فقد تحتاج إلى تحديث الشاشة ويجب أن تختفي.

تعد الخدمات طريقة رائعة لتشغيل التطبيقات أو البرامج النصية التي تحتاج إلى التشغيل طوال الوقت ، أو إعادة تشغيل نفسها إذا فشلت ، أو تحتاج إلى امتيازات مختلفة عن المستخدم الحالي. إذا لم تكن بحاجة إلى تطبيقك أو نصك البرمجي للقيام بكل هذه الأشياء ، ففكر في استخدام مهمة مجدولة(using a Scheduled Task) بدلاً من ذلك.



About the author

أنا مسؤول Windows 10 و Windows 11/10 ذو خبرة ولدي بعض الخبرة في Edge. لدي ثروة من المعرفة والخبرة لأقدمها في هذا المجال ، ولهذا السبب أعتقد أن مهاراتي ستكون رصيدًا قيمًا لشركتك. تمنحني سنوات خبرتي في كل من Windows 10 و Edge القدرة على تعلم التقنيات الجديدة بسرعة وحل المشكلات بسرعة وتحمل المسؤولية عندما يتعلق الأمر بإدارة عملك. بالإضافة إلى ذلك ، فإن تجربتي مع Windows 10 و Edge تجعلني على دراية كبيرة بجميع جوانب نظام التشغيل ، مما سيكون مفيدًا لإدارة الخوادم أو إدارة تطبيقات البرامج.



Related posts