Comment obtenir l'ID de processus par son nom de service avec un script à variable
J'ai de service nommé WinDefend
et il fonctionne sur les processus de svchost.exe
Il y a d'autres nombreux svchost.exe
processus et j'ai besoin de trouver un moyen d'obtenir son ID.
quand je lance tasklist /svc
je peux voir:
Je ne suis pas sûr de savoir comment puis-je l'obtenir.
J'ai trouvé cette commande, mais quand j'ai essayé le select "PID"
il m'a donné une colonne vide.
J'ai besoin d'obtenir le PID du processus de variable.
source d'informationauteur E235
Vous devez vous connecter pour publier un commentaire.
tasklist
est juste le retour du texte, pas de réels objets qui ont des propriétés que vous pouvez accéder. Vous pouvez utiliser WMI pour obtenir cette information à la place:Ennuyeux que cela est, il exige de vous que vous définissez un titre unique pour votre script si vous voulez le pid du processus en cours. Recherchez ce titre unique dans la liste des processus. Heureusement, le Titre vous permet de faire exactement cela. Voir aussi MagicAndi de réponse...
Voici mon fichier batch solution:
BTW, j'ai eu le "plaisir" de le faire encore et encore au fil des années, via l'API, ou le lot, ou le ps. Choisissez votre poison sur une plate-forme Windows c'est la même.
J'ai trouvé une meilleure façon de le faire via powershell: $retourne le pid du processus courant id de processus.
Une alternative pour obtenir un processus PID:
Ou vous pouvez résumer à:
Remarque: Ce saisira le premier service qui correspond à votre
$serviceName
si vous exécutez un service qui s'exécute à plusieurs reprises, de lui-même (e.x. slack) vous obtiendrez seulement la première pid.tasklist /v /fi "IMAGENAME eq slack.exe" /fo csv
retournera un tableau avec chaque CSV ligne d'un tableau d'entrée. Vous pouvez également filtrer ce avecfindstr
pour éviter les noms de colonne.EDIT:
Comme WinDefend est un subservice d'un programme (Dans ce cas
svchost.exe
) vous pouvez avoir besoin de swap drapeau du mode verbeux pourtasklist
à/svc
comme suit:sinon la recherche pour le nom du service par l'intermédiaire d'un filtre:
Et en tenant compte du fait que le filtre retourne une ligne de noms de colonnes ainsi que la ligne que vous recherchez:
En supposant que vous avez changé
$serviceName
àWinDefend
au lieu desvchost.exe
.