web-dev-qa-db-fra.com

Afficher l'état d'un service Windows à partir de l'invite de commandes

Existe-t-il une commande Windows qui affichera l'état d'un seul service?

Par exemple, je veux savoir si le "service d'administration IIS" est en cours d'exécution ou non. S'il est en cours d'exécution, la commande ouput doit être "en cours d'exécution".

J'ai essayé sc query type= service state= all | find "IIS Admin Service" qui affiche la sortie:

"DISPLAY_NAME: IIS Service d'administration"

J'ai aussi essayé net start "IIS Admin Service" | find "Running" qui affiche:

Le service demandé a déjà été démarré.

Plus d'aide est disponible en tapant NET HELPMSG 2182.

Mais cela ne me donne pas une sortie telle que

"nom du service" = en cours/désactivé/arrêté

Y a-t-il une commande qui a sorti dans ce format?

5
vikas

Utilisez le nom du service et non le nom d'affichage

sc query iisadmin

17
jonathan warren

Vous pouvez utiliser Powershell ainsi:

Get-Service -name 'IIS Admin Service'

9
vigilem

Si vous êtes prêt à utiliser l'excellent Cygwin bash, vous pouvez simplement écrire:

sc query "Bonjour Service" |grep -qo RUNNING && echo "Bonjour is ok!" || echo "Apple Bonjour Service not running"

L'astuce consiste à disposer d'un grep approprié, de sorte que de cette manière, vous puissiez attraper le statut vrai/faux (succès) de la commande. Ici -q est pour silencieux et -o sert uniquement à renvoyer la correspondance exacte et peut probablement être omis. Et oui, vous devez mettre votre "sc.exe" dans votre CHEMIN.

0
not2qubit