Come estraggo un elenco di servizi E quale account eseguono?


13

L'enfasi di questa domanda è sulla seconda metà.

So come estrarre un elenco di tutti i servizi e come filtrare il loro stato. Tuttavia, ciò che non sono sicuro su come fare è estrarre l'account utente il servizio è impostato su "Esegui come".

Non ho la possibilità di usare PowerShell (purtroppo), quindi sto cercando un modo CMD nativo. Ho pensato che ci sarebbe un modo per usare il comando sc query ma tutto ciò che elenca è:

SERVICE_NAME
TYPE
STATE
WIN32_EXIT_CODE
SERVICE_EXIT_CODE
CHECKPOINT
WAIT_HINT

Cordiali saluti - Il sistema operativo è Windows 2003 SP2 e ho bisogno di queste informazioni per tutti i servizi, quindi è un processo lungo se devo farlo manualmente per ciascuno di essi.

Risposte:


20

wmic:
nome e account per tutti i servizi:
wmic service get name,startname

solo servizi avviati:
wmic service where started=true get name, startname

servizi con modello specifico nel nome:
wmic service where 'name like "%sql%"' get name, startname

ben formattato come tabella html (e quindi aperto nel browser):
(wmic service where 'name like "%sql%"' get name, startname /format:htable >out.html) && out.html

Sintassi completa qui: https://msdn.microsoft.com/en-us/library/aa394531%28v=vs.85%29.aspx


Qual è la differenza tra sc querye wmic?
Pacerier,

1
@Pacerier Differenza rispetto a cosa? Sono solo strumenti diversi (cmd line) che consentono di interrogare / interagire con i servizi; sc è solo per questo scopo, mentre wmic è più generale (in quanto consente di interrogare varie parti del sistema). wmic è anche più facile da usare per questo particolare problema (solo una query)
wmz,

5

Puoi farlo in due passaggi:

  1. Ottieni l'elenco dei servizi:sc \\localhost query | findstr SERVICE_NAME
  2. Il tuo pezzo mancante: sc \\localhost qc+ SERVICE_NAME +| findstr SERVICE_START_NAME

Consiglierei uno script batch come questo:

@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

Questo ti dà un output come questo: inserisci qui la descrizione dell'immagine

Naturalmente, è possibile ripulire ulteriormente l'output o scrivere in un file CSV nel modo desiderato.


1

CMD non ha un modo nativo per farlo. SC e NET sono applicazioni integrate fornite con Windows ma ciò non significa che siano native. In qualsiasi momento un amministratore può rimuoverli e quindi anche CMD viene lasciato al buio.

sc sdshow è ciò che ti fornirà i descrittori di sicurezza, ma questo complicherà le cose se non sai come leggere le stringhe SDDL.

Il modo più semplice è ottenere Sysinternals PsService.exe dal pacchetto Strumenti e usarlo come psservice security [servizio]. Elencherà SDDL in formato leggibile, inclusi i nomi degli account.


Cosa intendi con "nessun modo nativo per farlo"? Non è presente C:\Windows\System32\sc.exeper tutte le versioni di Windows?
Pacerier,

Leggi ancora. Incorporato significa non rimovibile come CMD. Se un amministratore disabilita PowerShell, può disabilitare anche sc e net. Il modo più semplice è utilizzare un'app portatile che fa tutto per impostazione predefinita e non è legata al sistema operativo.
JasonXA,

1

Sebbene non sia possibile utilizzare PowerShell, è comunque possibile utilizzare VBScript per estrarre le informazioni da WMI:

Ecco uno script VBS che elencherà tutti i servizi e l'account che iniziano come:

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

Salvalo e poi eseguilo cscript ScriptName.vbs.

objService.State ti darebbe lo stato attuale del servizio (dal momento che hai detto che stai cercando di filtrarlo).

Ulteriori informazioni sulla classe Win32_Service .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.