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. 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. 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
      2. 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
        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. 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 ...