আমি কীভাবে কোনও স্ক্রিপ্ট থেকে উইন্ডোজ পরিষেবা পুনরায় চালু করব?


38

আমার কাছে এমন ব্যাচের স্ক্রিপ্ট রয়েছে যা দেখে মনে হচ্ছে:

sc stop myservice
sc start myservice

এটি ত্রুটিযুক্ত হয়েছে কারণ পরিষেবাটি বন্ধ হওয়া পর্যন্ত এসসি অপেক্ষা করে না। আমি কীভাবে কোনও স্ক্রিপ্ট দিয়ে কোনও পরিষেবা পুনরায় চালু করব?


এই সম্পর্কে কি ?
pQd

উত্তর:


47

পোস্টারটি পুনরায় চালু করার চেষ্টা করার আগে পরিষেবাটি বন্ধ হয়ে গেছে তা নিশ্চিত করতে চায়। "Sc ক্যোয়ারী" এর ফলাফল হিসাবে আপনি কিছু করতে করতে একটি লুপ ব্যবহার করতে পারেন:

:stop
sc stop myservice

rem cause a ~10 second sleep before checking the service state
ping 127.0.0.1 -n 10 -w 1000 > nul

sc query myservice | find /I "STATE" | find "STOPPED"
if errorlevel 1 goto :stop
goto :start

:start
net start | find /i "My Service">nul && goto :start
sc start myservice

8
সময়ের দেরি হিসাবে পিংয়ের দুর্দান্ত ব্যবহার।
ডেভিড ইউ

ধন্যবাদ, ব্যাচে ঘুম নেই তাই অপেক্ষা করার জন্য আপনি যা করতে পারেন তা কেবল :)
crb

4
+1 এবং একটি গমন ব্যাজ যারা সরাসরি মুখের সাথে একটি GOTO বিবৃতি ব্যবহার করে তাদের জন্য পুরস্কৃত।
জোসেফ কর্ন

যদি লুচগুলি কেবল ডু / ডু-র সমর্থিত থাকে ... তবে এটি সি # তে তুচ্ছ, সত্যই!
crb

3
উইন্ডোজ সার্ভার 2008 সালে, ত্রুটি স্তর 0 যখন পাওয়া গেছে এবং 1 যখন খুঁজে পাওয়া যায়নি। সুতরাং আমাকে যুক্তিটি উল্টাতে হয়েছিল এবং তারপরে এটি কাজ করেছিল।
কর্ক ওয়াল

26

কিছু অনুপস্থিত হতে পারে তবে আমি এটি সর্বদা ব্যবহার করি:

নেট স্টপ "মাইসারওয়াইস"
নেট স্টার্ট "মাইসারভাইস"

বা সংক্ষিপ্ত:

নেট স্টপ "মাইসারওয়াইস" && নেট শুরু "মাইসারওয়াইস"


24

পাওয়ারশেলের সাহায্যে মরা সহজ:

PS >Restart-Service MySrvcHere

আরও ভাল, প্রদর্শন নাম ব্যবহার করে:

PS >Restart-Service -displayname "My Service Name Here"

Get-Help Restart-Service আরো বেশী


6

এটি যদি নিখুঁতভাবে পরিষেবাটি পুনরায় চালু করার জন্য হয় তবে আপনি এটি ব্যবহার করতে পারেন

Net stop myservice
Net start myservice

তবে, আপনি যদি sc এর বিকল্পগুলিতে অ্যাক্সেস চান তবে আপনি স্টার্ট / ওয়েট কমান্ডটি ব্যবহার করতে পারেন

start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"

এই কৌশলটি একটি আরও সাধারণ সমাধান যা কোনও আদেশে প্রয়োগ করা যেতে পারে।


sc stop myserviceকেবল স্টপ কমান্ড প্রেরণ করবে এবং পরিষেবা বন্ধ হওয়ার আগে ফিরে আসবে। শুরু / বি দিয়ে এসসি কল করা কোনও উপকার করবে না।
জর্জেন স্টেইনব্লক

5

আছে শান্ত কিছু সেবা, যা (সার্ভার পরিসেবা হিসাবে উদাহরণস্বরূপ) নিশ্চিতকরণ জিজ্ঞেস বন্ধ করা এর পুনর্সূচনা, আপনি যোগ করতে পারিনি Y / স্টপ কমান্ড শেষে।

net stop Server /y
net start Server

এটি স্বয়ংক্রিয় স্ক্রিপ্ট প্রয়োগের জন্য সহায়ক হবে।


3

আপনি যদি কোনও ব্যর্থ পরিষেবা পুনরায় চালু করতে চান তবে আপনাকে স্ক্রিপ্ট চালানোর দরকার নেই। পরিষেবাগুলিতে এমএমসি স্ন্যাপিন একটি সেবার ডান ক্লিক করুন, বৈশিষ্ট্য নির্বাচন করুন, পুনরুদ্ধার ট্যাবে ক্লিক করুন। পরিষেবাটি বন্ধ হয়ে গেলে আপনি কী পদক্ষেপ নিতে চান তা এখানে সেট করতে পারেন। প্রচুর নমনীয়তা উপলব্ধ। আপনি স্ক্রিপ্টের প্রয়োজন হবে যদি আপনি এই পরিষেবাটি বন্ধ করার চেষ্টা করছেন, কিছু করুন তারপরে স্ক্রিপ্টটি শুরু করুন, ব্যাচ ফাইলটি প্রিফেস করুন net stop "myserviceshortname"এবং এর সাথে শেষ করুনnet start "myserviceshortname"

Vbscipt এ কোনও পরিষেবা এবং তার 'নির্ভরশীলদের থামানোর জন্য এটি আরও কিছুটা কোড:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
   & "{Win32_Service.Name='myservice'} Where " _
        & "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For each objService in colServiceList
    objService.StopService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='myservice'")
For each objService in colServiceList
    errReturn = objService.StopService()
Next

এখানে একটি পরিষেবা এবং এটি নির্ভর করে যে কোনও কিছু শুরু করছে (এটি পরিচিত হওয়া উচিত)

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
    ("Select * from Win32_Service where Name='Myservice'")
For each objService in colServiceList
    errReturn = objService.StartService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery("Associators of " _
   & "{Win32_Service.Name='myservice'} Where " _
        & "AssocClass=Win32_DependentService " & "Role=Dependent" )
For each objService in colServiceList
    objService.StartService()
Next

1

আপনি নিম্নলিখিত আদেশগুলি ব্যবহার করতে পারেন:

@echo off
sc Stop <Name of Agentry Service Here>
timeout 30
sc start <Name of Agentry Service Here>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.