مساعدة PowerShell ، إذا كانت العملية موجودة ، توقف عن ذلك ، وإلا ابدأ خدمة؟

StackOverflow https://stackoverflow.com/questions/3143938

سؤال

أنا جديد جدًا على 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*
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top