IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

[Batch] L'arrêt du service Windows n'arrête pas tout


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Par défaut [Batch] L'arrêt du service Windows n'arrête pas tout
    Salutations cher tous,

    Je viens vers vous car j'ai un léger soucis avec un service Windows.

    Pour expliquer rapidement, j'ai un petit .bat qui est lancé comme service Windows (Grâce à Srvany et ça marche niquel) et celui-ci lance un script Powershell, ce script Powershell est un serveur UDP qui reçoit et traite les messages reçus dans une boucle infinie.

    Tout ça marche très bien, mais le soucis que j'ai c'est quand j'arrête le service Windows, le service en lui-même s'arrête bel et bien mais il y a toujours le processus du Powershell qui tourne en fond (Background Process), et il faut que je l'arrête manuellement. Cela pose des problèmes puisque c'est contraire à l'automatisation et c'est justement l'intervention humaine que je souhaite éviter.

    Ma question est donc, comment faire pour, quand j'arrête le service, arrêter en même temps l’exécution du script Powershell? J'ai l'impression que le soucis vient surtout du fait que Powershell devient indépendant du service, et ça me gène

    Précisions :
    - J'ai essayé d'exécuter directement le script Powershell en tant que service Windows, mais ça ne voulait pas.
    - Je ne pense pas qu'il soit utile de vous fournir le contenu du fichier .ps1.
    - Tout ça c'est sur du Windows Server 2012.
    - Voici le Batch :

    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @ECHO OFF
    PowerShell.exe -Command "D:\filepath"

    Voilà, je suis un gros naze du Batch, en espérant qu'il y ait une solution miracle que j'aurais raté

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Pour arrêter un processus comme PowerShell.exe ou autre, vous pouvez utiliser ce petit batch
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    set Process=PowerShell.exe
    Taskkill /IM %Process% /F
    Pause

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Par défaut
    Merci pour le code

    Il fonctionne très bien mais le même soucis subsiste, en fait il faudrait que ce code (Pour fermer Powershell) s'exécute automatiquement (Que ce soit dans le .bat exécuté en tant que service ou dans un autre) lorsque j'arrête le service pour qu'il n'y ait pas de processus qui reste en exécution

    S'il n'y a pas vraiment de solution, ce n'est pas grave, ce n'est pas un problème capital, mais il se peut que ce soit gênant lorsque le serveur fasse un reboot ou quelque chose du genre.

    A vrai dire je suis actuellement en stage et je ne serais pas là longtemps dans l'entreprise, si quelqu'un arrête le service pour apporter une petite modification au script après mon départ, quand il va le redémarrer il ne va pas forcément se rendre compte que la nouvelle exécution ne va pas être prise en compte, car l'ancienne exécution est toujours active et pour une raison ou une autre, il n'y en a pas plusieurs en même temps et donc cette personne va sans doute bloquer un certain temps avant de comprendre que ce ne sont pas ses modifications qui posent problème.

    J'aimerais faire un truc propre en fait.

    C'est peut-être pure fantaisie, mais il n'y aurait pas un moyen de détecter, en code, qu'on fait une demande de fermeture du batch (Comme une sorte de Catch) et ainsi exécuter quelques lignes de codes spécifiques juste avant la fermeture?

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par Omegnight Voir le message
    Merci pour le code

    Il fonctionne très bien mais le même soucis subsiste, en fait il faudrait que ce code (Pour fermer Powershell) s'exécute automatiquement (Que ce soit dans le .bat exécuté en tant que service ou dans un autre) lorsque j'arrête le service pour qu'il n'y ait pas de processus qui reste en exécution

    S'il n'y a pas vraiment de solution, ce n'est pas grave, ce n'est pas un problème capital, mais il se peut que ce soit gênant lorsque le serveur fasse un reboot ou quelque chose du genre.

    A vrai dire je suis actuellement en stage et je ne serais pas là longtemps dans l'entreprise, si quelqu'un arrête le service pour apporter une petite modification au script après mon départ, quand il va le redémarrer il ne va pas forcément se rendre compte que la nouvelle exécution ne va pas être prise en compte, car l'ancienne exécution est toujours active et pour une raison ou une autre, il n'y en a pas plusieurs en même temps et donc cette personne va sans doute bloquer un certain temps avant de comprendre que ce ne sont pas ses modifications qui posent problème.

    J'aimerais faire un truc propre en fait.

    C'est peut-être pure fantaisie, mais il n'y aurait pas un moyen de détecter, en code, qu'on fait une demande de fermeture du batch (Comme une sorte de Catch) et ainsi exécuter quelques lignes de codes spécifiques juste avant la fermeture?
    Pouvez-vous nous poster votre code qui arrêtre le service pour qu'on puisse ajouter nos grains du sel

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Par défaut
    En fait pour les essais que j'ai fait j'ai manuellement fermé les services en utilisant l'application 'Services' de Windows.

    Mais c'est vrai que fournir un Batch pour stopper le service ET en même temps le powershell est une bonne idée, je n'avais pas du tout vu les choses comme ça

    [Edit] : Je pense que je me prenais la tête un peu pour rien, je saurais me débrouiller pour le batch pour fermer le service proprement, merci

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par Omegnight Voir le message
    En fait pour les essais que j'ai fait j'ai manuellement fermé les services en utilisant l'application 'Services' de Windows.
    Mais c'est vrai que fournir un Batch pour stopper le service ET en même temps le powershell est une bonne idée, je n'avais pas du tout vu les choses comme ça
    Ah, j'ai pensé que vous avez fait un code pour arrêter ce service en faite c'est quoi son nom ?
    On peut par un simple vbscript ou bien un batch arrêter le service en question et aussi powershell.

  7. #7
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Le seul moyen d'arrêter ton script est de lui envoyé un message (ou éventuellement un signal mais c'est plus complexe). Pour ce faire, il faut que tu place dans ta boucle infini l'appel d'une fonction qui à pour tache de vérifier la boucle réseau locale (localhost ou 127.0.0.1) pour arrêté le service depuis le script powershell.
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Service Windows n'apparait pas dans la liste
    Par Invité dans le forum C#
    Réponses: 3
    Dernier message: 04/11/2009, 11h49
  2. [Service Windows][Impression][Java] Pas d'impression lancée
    Par Hikage dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 26/01/2009, 11h20
  3. [batch] Etat d'un service Windows
    Par empire.dev dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 30/08/2008, 01h00
  4. Détection de l'arrêt du service windows
    Par Orell dans le forum Général Java
    Réponses: 5
    Dernier message: 29/08/2007, 14h09
  5. Mon service Windows ne marche pas
    Par laadhar dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo