مساعدة PowerShell ، إذا كانت العملية موجودة ، توقف عن ذلك ، وإلا ابدأ خدمة؟
-
01-10-2019 - |
سؤال
أنا جديد جدًا على PowerShell. لديّ برنامجين مختلفين أديرهما وأود أن دمجه في نص واحد.
يحتوي البرنامج النصي 1 على سطر واحد
Stop-Process -ProcessName alcore.* -force
الغرض من ذلك هو إنهاء أي عملية تبدأ بـ "alcore".
يحتوي البرنامج النصي 2 على خط واحد أيضًا
Start-Service -displayname crk*
يبدأ أي خدمة تبدأ مع CRK.
كيف يمكنني الجمع بين هذه في نص واحد؟ إذا كانت العمليات قيد التشغيل ، أود أن أوقفها ، إن لم يكن ، أود أن أبدأ الخدمات. كيف يمكنني تحقيق ذلك؟
أحاول هذا ولكنه لا يعمل
$services = Get-Process alcore.*
if($services.Count -qe 1){
Stop-Process -ProcessName alcore.* -force
} else {
Start-Service -displayname crk*
}
كيف يمكنني فعل هذا بشكل صحيح؟ أيضا هل يجب أن أقوم بلفها في وظيفة وأتصل بالوظيفة؟ هذا يبدو أنظف بعض الشيء. شكرا على اي مساعدة.
هتافات،
~ CK
المحلول
استخدم Get-Service للحصول على حالة الخدمة. قد تكون العملية قيد التشغيل ولكن قد يتم إيقاف الخدمة:
$services = @(Get-Service alcore.*)
foreach ($service in $services)
{
if ($service.Status -eq 'Running')
{
$service | Stop-Service
}
else
{
Start-Service -DisplayName crk*
}
}
لا تنتمي إلى StackOverflow