دليل

sc.exe وGet-Service، وهذه الأداة

كلاهما موجود على الجهاز أصلًا، وكلاهما سيبقى نافعًا. وهذه الصفحة عن المكان الذي يتوقفان عنده، وهي تقول بوضوح أين يظلان الجواب الأفضل.

أين يتوقف كل منهما

sc.exe

يصل إلى كل ما يعرفه مدير التحكم بالخدمات تقريبًا، ولا يخبرك بشيء عن كيف تسأل. وصيغته من التسعينيات: sc config X start= auto، حيث المسافة بعد علامة المساواة إلزامية وغيابها فشل صامت في فعل ما قصدته.

يجيب عن عنصر واحد في كل مرة. لا تصفية، ولا مخرجات يستطيع سكربت تحليلها دون كتابة محلل، ولا معاينة: الأمر sc stop إما أن ينجح أو يعيد رقمًا.

Get-Service وأوامر *-Service

كائنات حقيقية، وأنبوب معالجة، ونظرة سطحية. ففي Windows PowerShell 5.1، وهو الذي يأتي مع Windows، لا يعرض Get-Service الحساب الذي تعمل به الخدمة ولا وصفها. أما PowerShell 7 فيعرض الاثنين، ومسار التشغيل أيضًا، ويُثبَّت بشكل منفصل.

الخيار Stop-Service -Force يعني «حتى لو كان شيء يعتمد عليها»: فهو يوقف الخدمات التابعة، ويخبرك بعد ذلك لا قبله.

الأسئلة نفسها، بثلاث طرق

السؤالبما هو موجود على الجهازهنا
ما الذي يجب أن يعمل ولا يعمل Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } bws list --query "start:auto !status:running"
أي الخدمات لها ملف تنفيذي غير موقّع اقرأ كل مسار تشغيل، وحلّه، واستدعِ Get-AuthenticodeSignature على كل واحد: سكربت، لا أمر bws list --query "signed:no"
ما الذي سيسقط إن أوقفت هذه sc enumdepend X، ثم اقرأ القائمة وقرّر بنفسك bws stop X --dry-run --dependents، وهي الخطة التي ستُنفَّذ
ما الذي تغيّر منذ الأسبوع الماضي لا شيء، إلا إن كتبت المُجمِّع بنفسك bws snapshot diff before.json --live
من غيّر نوع بدء التشغيل، ومتى Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }، ثم اقرأ رسالة كل حدث bws history Spooler، وسطره الأول يقول إلى أي مدى يمتد السجل إلى الوراء
مخرجات يقرؤها الجهاز كائنات من PowerShell، ونص من sc.exe الخيار --json في كل أمر، على الإخراج القياسي، والتحذيرات على الخطأ القياسي

حيثما اختلفت هذه الأداة عن sc.exe بشأن خدمة فذلك خلل هنا. فجزء من مجموعة الاختبارات يشغّل الاثنين على الجهاز الذي يعمل عليه ويقارن بينهما عنصرًا عنصرًا، والفرق بين الاثنين هو أنفع شيء يمكن وضعه في بلاغ.

متى تواصل استخدام ما عندك

  • أنت على جهاز ستلمسه مرة واحدة. كلاهما موجود أصلًا ولا شيء يحتاج إلى المرور عبر سياسة.
  • تحتاج إلى تغيير الحساب أو مسار التشغيل أو إجراءات الاسترداد. يفعل sc.exe الثلاثة. أما هذه الأداة فتعرض الحساب ومسار التشغيل ولا تغيّر أيًّا منهما، وتقرأ إجراءات الاسترداد فقط لتحذّر قبل أن تنهي عملية.
  • تحتاج إلى إنشاء خدمة أو حذفها. sc create وsc delete. ليس هنا، عن قصد.
  • أنت غارق أصلًا في أنبوب PowerShell. يعود bws list --json كائنات عبر ConvertFrom-Json، فينضم إلى الأنبوب بدل أن يحل محله.

معًا، لا بدلًا

الأداة التي تجيب عن ما الخطب في هذا الجهاز والأدوات التي تغيّر إعدادًا واحدًا ليست الأداة نفسها. اسأل السؤال هنا، واقرأ الخطة هنا، واستخدم ما تشاء لتنفيذها: فالخطة تطبع سطر الأوامر الذي يطلب الشيء نفسه، وهذا السطر مصمّم لكي يُنسخ.