Script bat pour lister services

Résolu
Bonjour,

je suis entrain de réaliser un script me permettant de lister les services sur un pc distant et pouvoir faire plusieurs actions sur ces services

je récupère les données via "sc \\ipduposte query"

dans l'idéal

je souhaiterai que le script se déroule de cette façon

qu'on me demande l'ip => ça c'est ok

ensuite que j'ai 5 choix,
lister les services
redémarrer un service => ça c'est ok
démarrer => ça c'est ok
arrêter => ça c'est ok
quitter => ça c'est ok

le problème étant pour lister les services, je souhaiterai n'avoir que le nom du service, le fichier exe correspondant au service et son état et optionnellement, pouvoir le sauvegarder dans un fichier texte

merci d'avance pour vos réponses



--
en formation de GMSI :D

6 réponses

  1. Contributeur
    net start te donnera la liste des services actifs ...
    Google is your best friend
    VB.NET is good ... VB6 is better !
    1. elle me donne bien les services actifs par contre si je souhaite agir sur un des services, il me faut le nom "court" qui est en .exe
      1. voilà le script, il n'est pas terminé

        je n'arrive pas encore à reprendre seulement les données que je souhaite,c'est à dire le nom du service et son état

        @color 1F
        cls
        @echo off
        echo ---------------------------------------
        echo Demarrer / arreter / redemarrer un service a distance
        echo ---------------------------------------
        echo .
        echo .

        set /p adresseip=Entrer l'adresse ip de l'ordinateur distant ?

        :DEB

        echo 1 - Recuperer les services demarres
        echo 2 - Recuperer les services arretes
        echo 3 - Redemarrer un service
        echo 4 - Arreter un service
        echo 5 - Demarrer un service
        echo 6 - Quitter
        Echo Votre choix ?
        set /p choix=

        IF %choix%==1 GOTO CHOIX1
        IF %choix%==2 GOTO CHOIX2
        IF %choix%==3 GOTO CHOIX3
        IF %choix%==4 GOTO CHOIX4
        IF %choix%==5 GOTO END

        GOTO END

        :CHOIX1
        sc \\%adresseip% queryex > liste_des_services_en_cours_de_%adresseip%.txt
        pause
        notepad liste_des_services_en_cours_de_%adresseip%.txt
        cls
        GOTO DEB

        :CHOIX2
        sc \\%adresseip% queryex > liste_des_services_arretes_de_%adresseip%.txt
        pause
        notepad liste_des_services_arretes_de_%adresseip%.txt
        cls
        GOTO DEB

        :CHOIX3
        set /p service=service a redemarrer ?
        sc \\%adresseip% stop %service%
        pause
        sc \\%adresseip% start %service%
        pause
        cls
        GOTO DEB

        :CHOIX4
        set /p service=service a arreter ?
        sc \\%adresseip% stop %service%
        pause
        cls
        GOTO DEB

        :CHOIX5
        set /p service=service a demarrer ?
        sc \\%adresseip% start %service%
        pause
        cls
        GOTO DEB

        :END

        qu'est ce que vous en pensez ?
        avez vous une réponse à mon probleme ?

        merci d'avance
        1. Bonjour,

          Si personne ne te répond pas d'ici demain je te donnerai un coup de main pour faire ton script, mais là c'est l'heure de partir du boulot :p

          PS : juste avec le nom tu peux arreter/demarrer le service ex : sc \\127.0.0.1 start "ipod service"

          A demain peut être.

          Cordialement.
          1. Contributeur
            Et c'est ce qu'il faut, donc plus besoin du nom de l'exécutable ...
        2. Bonsoir,

          j'ai pu avoir un peu de temps !

          Pour lister les services actifs :

          :CHOIX1
          cls 
          sc \\%adresseip% queryex > %tmp%\active.txt
          for /f "tokens=1,* delims= " %%a in ('type "%tmp%\active.txt" ^|findstr /i /r "Service_NAME:"') do echo %%b >> act.txt
          pause
          notepad %tmp%\act.txt 
          cls 
          GOTO DEB 


          Pour lister les services inactifs :

          :CHOIX2 
          sc \\%adresseip% queryex state= inactive > %tmp%\inactive.txt
          for /f "tokens=1,* delims= " %%a in ('type "%tmp%\inactive.txt" ^|findstr /i /r "Service_NAME:"') do echo %%b >> %tmp%\inact.txt
          pause
          notepad %tmp%\inact.txt
          cls 
          GOTO DEB 


          Cordialement.
          1. Ne pas oublier d'effacer les fichiers txt a chaque fois ^^
          2. waouw merci , ça a l'air de fonctionner pour certains services

            il y a par exemple ocs que je ne peux pas arrêter

            pourtant je reprend bien le nom de service mais je pense que l'espace lui pose problème
            le service s'appel OCS INVENTORY

            j'ai essayé de mettre un espace, un % entre les deux mais il me répond que le service n'est pas installé

            As tu une solution pour cela ?

            Merci d'avance
          3. De le mettre entre "OCS INVENTORY" peut être

            Cordialement
          4. erf ne marche pas mais en tout cas, tu m'a enlevé une belle épine du pied.

            je laisse le poste ouvert si jamais une autre personne aurait une autre idée.

            Merci encore
          5. Le problème ne vient pas de l'espace, car pour moi

            sc \\127.0.0.1 start "ipod service"

            Marche bien.

            Vérifies le nom qu'il porte directement dans les services
        3. Bonjour,

          Exactement, le même besoin que moi. je souhaiterai extraire sous Excel la liste des services et les comptes qui les lancent.
          Merci d'avance