मैं सेवाओं की सूची कैसे निकालूं और वे किस खाते के रूप में चलती हैं?


13

इस सवाल का जोर दूसरी छमाही पर है।

मुझे पता है कि सभी सेवाओं की सूची कैसे निकाली जाए और उनके राज्य को कैसे फ़िल्टर किया जाए। हालाँकि, जो मैं अनिश्चित हूं कि उपयोगकर्ता खाते को निकालने के लिए कैसे करना है जो सेवा "के रूप में चलाने" के लिए सेट है।

मेरे पास पॉवरशेल (दुर्भाग्य से) का उपयोग करने का विकल्प नहीं है, इसलिए मैं एक देशी सीएमडी तरीका ढूंढ रहा हूं। मुझे लगता है कि sc क्वेरी कमांड का उपयोग करने का एक तरीका होगा, लेकिन वह सभी सूचियां हैं:

SERVICE_NAME
TYPE
STATE
WIN32_EXIT_CODE
SERVICE_EXIT_CODE
CHECKPOINT
WAIT_HINT

FYI करें - OS WIndows 2003 SP2 है और मुझे सभी सेवाओं के लिए इस जानकारी की आवश्यकता है, इसलिए यदि मुझे उनमें से प्रत्येक के लिए मैन्युअल रूप से करना पड़े तो यह एक लंबी घुमावदार प्रक्रिया है।

जवाबों:


20

wmic:
सभी सेवाओं के लिए नाम और खाता:
wmic service get name,startname

केवल शुरू की गई सेवाएं:
wmic service where started=true get name, startname

नाम में विशिष्ट पैटर्न के साथ सेवाएं:
wmic service where 'name like "%sql%"' get name, startname

अच्छी तरह से html तालिका के रूप में स्वरूपित (और फिर आपके ब्राउज़र में खोला गया):
(wmic service where 'name like "%sql%"' get name, startname /format:htable >out.html) && out.html

पूर्ण सिंटैक्स यहाँ: https://msdn.microsoft.com/en-us/library/aa394531%28v=vs.85%29.aspx


बीच क्या अंतर है sc queryऔर wmic?
15

1
@ स्पेसर अंतर क्या है? वे आपको सेवाओं से क्वेरी / बातचीत करने की अनुमति देते हुए बस अलग (cmd लाइन) उपकरण हैं; sc केवल इस उद्देश्य के लिए है, जबकि विकी अधिक सामान्य है (क्योंकि यह सिस्टम के विभिन्न भागों को क्वेरी करने की अनुमति देता है)। wmic इस विशेष समस्या (केवल एक प्रश्न) के लिए उपयोग करना आसान है
wmz

5

आप इसे दो चरणों में पूरा कर सकते हैं:

  1. सेवाओं की सूची प्राप्त करें:sc \\localhost query | findstr SERVICE_NAME
  2. आपका लापता टुकड़ा: sc \\localhost qc+ SERVICE_NAME +| findstr SERVICE_START_NAME

मैं इस तरह एक बैच स्क्रिप्ट की सिफारिश करेंगे:

@echo off
setlocal EnableDelayedExpansion
sc \\localhost query | findstr SERVICE_NAME > services.lst
for /f "tokens=1,2" %%A in (services.lst) do (
    echo %%B
    sc \\localhost qc %%B | findstr SERVICE_START_NAME
)
del services.lst

इससे आपको एक आउटपुट मिलता है: यहाँ छवि विवरण दर्ज करें

बेशक, आप उस आउटपुट को और साफ़ कर सकते हैं या किसी भी तरीके से CSV फ़ाइल में लिख सकते हैं जो आप चाहते हैं।


1

सीएमडी के पास इसे करने का कोई मूल तरीका नहीं है। SC और NET अंतर्निहित एप्लिकेशन हैं जो विंडोज के साथ आते हैं लेकिन इसका मतलब यह नहीं है कि वे मूल निवासी हैं। किसी भी समय एक व्यवस्थापक उन्हें हटा सकता है और फिर भी सीएमडी अंधेरे में छोड़ दिया जाता है।

sc sdshow वह है जो आपको सुरक्षा डिस्क्रिप्टर मिलेगा, लेकिन यह चीजों को जटिल करेगा यदि आप एसडीडीएल स्ट्रिंग्स को पढ़ना नहीं जानते हैं।

सरल तरीका यह है कि टूल पैकेज से Sysinternals PsService.exe प्राप्त करें और इसे psservice सुरक्षा [सेवा] के रूप में उपयोग करें। यह एसडीडीएल को पठनीय प्रारूप में सूचीबद्ध करेगा, जिसमें खाता नाम शामिल हैं।


"क्या करने का कोई मूल तरीका नहीं है" से आपका क्या मतलब है? क्या यह C:\Windows\System32\sc.exeविंडोज़ के सभी संस्करणों के लिए नहीं है ?
पचेरियर 14

दोबारा पढ़ें। अंतर्निहित मतलब सीएमडी की तरह गैर-हटाने योग्य। यदि कोई व्यवस्थापक PowerShell को अक्षम करता है, तो वह sc और net को भी अक्षम कर सकता है। सबसे सरल तरीका एक पोर्टेबल ऐप का उपयोग करना है जो सभी डिफ़ॉल्ट रूप से करता है और ओएस से बंधा नहीं है।
जेसनएक्सए

1

यद्यपि आप PowerShell का उपयोग नहीं कर सकते हैं, फिर भी आपको WMI से जानकारी खींचने के लिए VBScript का उपयोग करने में सक्षम होना चाहिए:

यहां एक VBS स्क्रिप्ट है जो सभी सेवाओं और उनके द्वारा शुरू किए गए खाते को सूचीबद्ध करेगी:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery ("Select * from Win32_Service")

For Each objService in colServices 
    wscript.echo objService.Name & ": " & objService.StartName
Next

इसे सेव करें और फिर इसके साथ रन करें cscript ScriptName.vbs

objService.State आपको सेवा की वर्तमान स्थिति देगा (जब से आपने उल्लेख किया है कि आप इसे फ़िल्टर करना चाहते हैं)।

Win32_Service वर्ग के बारे में अधिक जानकारी ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.