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

VBScript Discussion :

Changement de statut des services windows


Sujet :

VBScript

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Changement de statut des services windows
    Bonjour à tous,

    Je dois par un script 1 modifier le statut de plusieurs services les passer de Disable en Enable, puis les démarrer.

    Par un script 2 faire l'inverse :
    Stopper les services, puis les passer de Enable en Disable.



    J'ai trouvé ceci pour un service (exp. SSIE), ça ne fonctionne pas alors pour plusieurs ???

    Merci pour votre aide.

    Script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     
    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name ='SSIE'")
     
    For Each objService in colServiceList
        If objService.State = "Running" Then
            objService.StopService()
            Wscript.Sleep 5000
        End If
        errReturnCode = objService.ChangeStartMode("Disabled")   
    Next

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Bonjour !
    Ce genre de code te conviendrait-il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Function StrInArr(strIn, arrIn)
    	Dim strTmp, boolOut
    	boolOut = False
    	For Each strTmp In arrIn
    		If StrComp(strTmp, strIn, vbTextCompare) = 0 Then boolOut = True
    	Next
    	StrInArr = boolOut
    End Function
     
    Dim arrServices
    strComputer = "."
     
    arrServices = Array("SSIE", "wscsvc", "Dhcp", "Dnscache", "netman", "AudioSrv") 'Saisir ici la liste des services
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where StartMode = 'Disabled'") ' On sélectionne les services désactivés
     
    For Each objService in colServiceList
    	If StrInArr(objservice.Name, arrServices) then ' On vérifie s'ils sont dans la liste arrServices
    			objservice.ChangeStartMode("Automatic") ' Si oui on les passe en démarrage automatique
    			if objService.state = "Stopped" Then objService.StartService() ' Et s'ils sont arrêtés, on les démarre
    	End if
    Next

    EDIT : Je n'avais pas vu la seconde partie de ta question ...
    J'imagine que tu aurais su adapter le code précédent mais je n'ai rien d'autre a faire actuellement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Function StrInArr(strIn, arrIn)
    	Dim strTmp, boolOut
    	boolOut = False
    	For Each strTmp In arrIn
    		If StrComp(strTmp, strIn, vbTextCompare) = 0 Then boolOut = True
    	Next
    	StrInArr = boolOut
    End Function
     
    Dim arrServices
    strComputer = "."
     
    arrServices = Array("AudioSrv", "Alerter") 'Saisir ici la liste des services
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service")
     
    For Each objService in colServiceList
    	If StrInArr(objservice.Name, arrServices) then ' On vérifie s'ils sont dans la liste
    			if objService.state = "Running" Then objService.StopService() ' S'ils sont démarrés, on les arrête
    			objservice.ChangeStartMode("Disabled") ' Et on les déscative au démarrage
    	End if
    Next

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Toujous un petit soucis ?
    Merci pour ta réponse Cachlab,

    mais lorsque j' exécute le script avec tes modifications, il ne traite que le premier service ? (SSIE) il le passe bien en manuel, et le démarre (service désactivé et arrêté avant l’exécution du script)

    j'ai donc toujours mon pb, merci pour ton aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Function StrInArr(strIn, arrIn)
    	Dim strTmp, boolOut
    	boolOut = False
    	For Each strTmp In arrIn
    		If StrComp(strTmp, strIn, vbTextCompare) = 0 Then boolOut = True
    	Next
    	StrInArr = boolOut
    End Function
     
    Dim arrServices
    strComputer = "."
     
    arrServices = Array("SSIE", "Telnet") 'Saisir ici la liste des services
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where StartMode = 'Disabled'") ' On sélectionne les services désactivés
     
    For Each objService in colServiceList
    	If StrInArr(objservice.Name, arrServices) then ' On vérifie s'ils sont dans la liste arrServices
    			objservice.ChangeStartMode("Manual") ' Si oui on les passe en démarrage Manuel
    			'if objService.state = "Stopped" Then objService.StartService() ' Et s'ils sont arrêtés, on les démarre
    	End if
    Next
    Cordialement

    PAB

  4. #4
    Membre éprouvé Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Points : 933
    Points
    933
    Par défaut
    hello,
    je te propose de filtrer tes services sur la query WMI.
    pour cela tu peux mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select name from Win32_Service where StartMode = 'Disabled' and (name = 'Mcx2Svc' or name ='W32Time' or name = '<Nom du service>')
    Cette query va te retourner une collection de service qui sont dans l'état Disabled et qui sont dans ta liste de service à modifier.

    sinon tu peux utiliser la solution que Cachlab vient de te donner. elle doit fonctionner, je pense qu'il s'arrete sur ton premier service car service doit etre soit absent ou alors déja en démarrage automatique.
    Cordialement
    Le tag est bien utile, alors pensez y !

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Merci pour vos réponses, mais j'ai un gros problème
    Merci Cachlab et Cubitus,

    mais je ne m'en sors pas ?

    je m'explique:

    Mes deux services "SSIE" et "Telnet" sont désactivés et arrêtés.
    Lorsque je lance le script (celui de Cachlab) il ne se passe rien ?
    J'ajoute la modif (cubitus) toujours rien. Mes services restent
    désactivés et arrêtés.

    Là je souffre... Merci pour vos aides.

    Pab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Function StrInArr(strIn, arrIn)
    	Dim strTmp, boolOut
    	boolOut = False
    	For Each strTmp In arrIn
    		If StrComp(strTmp, strIn, vbTextCompare) = 0 Then boolOut = True
    	Next
    	StrInArr = boolOut
    End Function
     
    Dim arrServices
    strComputer = "."
     
    arrServices = Array("SSIE", "Telnet") 'Saisir ici la liste des services
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where StartMode = 'Disabled'") ' On sélectionne les services désactivés
     
    For Each objService in colServiceList
    	If StrInArr(objservice.Name, arrServices) then ' On vérifie s'ils sont dans la liste arrServices
    			objservice.ChangeStartMode("Manual") ' Si oui on les passe en démarrage Manuel
    			'if objService.state = "Stopped" Then objService.StartService() ' Et s'ils sont arrêtés, on les démarre
    	End if
    Next

  6. #6
    Membre éprouvé Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Points : 933
    Points
    933
    Par défaut
    Hello PAB/31/SAB,
    Peux lancer ce script sur ton poste et nous retourner le code de retour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Option Explicit
    'local var 
    Dim strComputer,errReturn
    Dim objWMIService,colServiceList,objService
    'Initialyze var
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select name from Win32_Service where StartMode = 'Disabled' and (name = 'SSIE' or name ='Telnet')") 
     
    For Each objService in colServiceList
     Wscript.Echo "Démarage du service: " & objService.name
     errReturn = objService.ChangeStartMode("Manual")
        Wscript.Echo "Code de retour: " & errReturn
    Next
     
    Set colServiceList = Nothing 
    Set objWMIService = Nothing
    Tu dois en avoir deux, un pour chaque service.
    Cordialement
    Le tag est bien utile, alors pensez y !

  7. #7
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Code retour
    Merci pour ta réponse, voici ce qui ce passe

    après l’exécution du script il me retourne:

    Démarrage du service : SSIE
    Code de retour : 0

    Il passe le service SSIE en manuel, sans le démarrer
    Le service Telnet reste désactivé ?????

  8. #8
    Membre éprouvé Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par PAB/31/SAB Voir le message
    Merci pour ta réponse, voici ce qui ce passe

    après l’exécution du script il me retourne:

    Démarrage du service : SSIE
    Code de retour : 0

    Il passe le service SSIE en manuel, sans le démarrer
    Le service Telnet reste désactivé ?????

    Alors pour SSIE normal j'ai pas mis le démarage :-)
    Pour Telnet tu as pas d'info, du tout. Donc l'état du service n'est pas sur désactivé...
    Le tag est bien utile, alors pensez y !

  9. #9
    Membre éprouvé Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Points : 933
    Points
    933
    Par défaut
    hello,
    j'ai rajouté un peu log sur tes actions. Il te reste à faire si tu le souhaites histoire d'allé jusqu'au bout:
    • Monitoring sur le démarage d'un service. Le temps de démarage d'un service peut etre plus ou moins long en fonction de celui-ci.
    • Si tu as des dépendences sur ton service, tu dois peux etre les prendres en comptes.
    Voila le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    Option Explicit
    'local var 
    Dim strComputer,errReturn,ErrStartReturn
    Dim objWMIService,colServiceList,objService
    'Initialyze var
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery ("Select name from Win32_Service where StartMode = 'Disabled' and (name = 'MSDTC' or name ='defragsvc')") 
     
    For Each objService In colServiceList
      Wscript.Echo "Met le service: " & objService.name & " en mode Manuel"
      errReturn = objService.ChangeStartMode("Manual")
        Wscript.Echo "Message de retour: " & GetReturnChangeStartMode(errReturn)  & " avec le code: " & errReturn    
        If errReturn = 0 Then
          Wscript.Echo "Tentative de démarage du service: " & objService.name
          ErrStartReturn = objService.startService()
          Wscript.Echo "Message de retour: " & GetStartingErrString(ErrStartReturn)  & " avec le code: " & ErrStartReturn
        Else 
        WScript.Echo 
        End If
     
     
    Next
     
    Set colServiceList = Nothing 
     
    Private Function GetReturnChangeStartMode(pintCodeError)
    Dim pstrReturnString
    Select Case pintCodeError
    Case 0 
    pstrReturnString =  "Success"
    Case 1 
    pstrReturnString =  "Not Supported"
    Case 2 
    pstrReturnString =  "Access Denied"
    Case 3 
    pstrReturnString =  "Dependent Services Running"
    Case 4 
    pstrReturnString =  "Invalid Service Control"
    Case 5 
    pstrReturnString =  "Service Cannot Accept Control"
    Case 6 
    pstrReturnString =  "Service Not Active"
    Case 7 
    pstrReturnString =  "Service Request Timeout"
    Case 8 
    pstrReturnString =  "Unknown Failure"
    Case 9 
    pstrReturnString =  "Path Not Found"
    Case 10 
    pstrReturnString =  "Service Already Running"
    Case 11 
    pstrReturnString =  "Service Database Locked"
    Case 12 
    pstrReturnString =  "Service Dependency Deleted"
    Case 13 
    pstrReturnString =  "Service Dependency Failure"
    Case 14 
    pstrReturnString =  "Service Disabled"
    Case 15 
    pstrReturnString =  "Service Logon Failure"
    Case 16 
    pstrReturnString =  "Service Marked For Deletion"
    Case 17 
    pstrReturnString =  "Service No Thread"
    Case 18 
    pstrReturnString =  "Status Circular Dependency"
    Case 19 
    pstrReturnString =  "Status Duplicate Name"
    Case 20 
    pstrReturnString =  "Status Invalid Name"
    Case 21 
    pstrReturnString =  "Status Invalid Parameter"
    Case 22 
    pstrReturnString =  "Status Invalid Service Account"
    Case 23 
    pstrReturnString =  "Status Service Exists"
    Case 24 
    pstrReturnString =  "Service Already Paused"
    Case Else
    pstrReturnString = "unknow error"
    End Select
    GetReturnChangeStartMode = pstrReturnString
    End Function 
     
    Private Function GetStartingErrString(pintCodeError)
    Dim pstrReturnString
    Select Case pintCodeError
    Case 0 
    pstrReturnString = "Réussite.La demande a été acceptée."
    Case 1 
    pstrReturnString = "Non pris en charge.La demande n'est pas prise en charge."
    Case 2 
    pstrReturnString = "Accès refusé.L'utilisateur ne disposait pas des droits d'accès appropriés."
    Case 3 
    pstrReturnString = "Services dépendants en cours d'exécution.Le service ne peut pas être arrêté car d'autres services en cours d'exécution en dépendent."
    Case 4 
    pstrReturnString = "Contrôle de service non valide.Le code de contrôle demandé n'est pas valide ou est inacceptable pour le service."
    Case 5 
    pstrReturnString = "Le service n'accepte pas le contrôle.Le code de contrôle demandé ne peut pas être envoyé au service car l'état du service (Win32_BaseService:State) est égal à 0, 1 ou 2."
    Case 6 
    pstrReturnString = "Service inactif.Le service n'a pas été démarré."
    Case 7 
    pstrReturnString = "Délai de la demande de service dépassé.Le service n'a pas répondu à la demande de démarrage en temps voulu."
    Case 8 
    pstrReturnString = "Échec inconnu.Un échec inconnu s'est produit lors du démarrage du service."
    Case 9 
    pstrReturnString = "Chemin d'accès introuvable.Le chemin d'accès au répertoire de l'exécutable du service n'a pas été trouvé."
    Case 10 
    pstrReturnString = "Le service est déjà en cours d'exécution.Le service est déjà en cours d'exécution."
    Case 11 
    pstrReturnString = "Base de données du service verrouillée.La base de données pour ajouter un nouveau service est verrouillée."
    Case 12 
    pstrReturnString = "Dépendance du service supprimée.Une dépendance sur laquelle repose ce service a été supprimée du système."
    Case 13 
    pstrReturnString = "Échec de la dépendance du service.Le service n'a pas pu trouver le service nécessaire à partir d'un service dépendant."
    Case 14 
    pstrReturnString = "Service désactivé.Le service a été désactivé du système."
    Case 15 
    pstrReturnString = "Échec de connexion au service.Le service ne dispose pas de l'authentification correcte pour être exécuté sur le système."
    Case 16 
    pstrReturnString = "Service marqué pour suppression.Le service est en cours de suppression du système."
    Case 17 
    pstrReturnString = "Service sans thread.Il n'y a pas de thread d'exécution pour le service."
    Case 18 
    pstrReturnString = "Dépendance circulaire de l'état.Le démarrage du service donne lieu à des dépendances circulaires."
    Case 19 
    pstrReturnString = "Nom de l'état déjà existant.Un service est en cours d'exécution sous le même nom."
    Case 20 
    pstrReturnString = "Nom de l'état non valide.Le nom du service contient des caractères non valides."
    Case 21 
    pstrReturnString = "Paramètre d'état non valide.Des paramètres non valides ont été transmis au service."
    Case 22 
    pstrReturnString = "Compte du service d'état non valide.Le compte sous lequel ce service doit s'exécuter n'est pas valide ou il ne dispose pas des autorisations nécessaires pour exécuter le service."
    Case 23 
    pstrReturnString = "Le service d'état existe déjà.Le service existe dans la base de données des services disponibles dans le système."
    Case 24 
    pstrReturnString = "Service déjà en pause.Le service est actuellement mis en pause dans le système."
    Case Else
    pstrReturnString = "unknow error"
    End Select
    GetStartingErrString = pstrReturnString
    End Function
    En esperant que cela t'aide.
    Cordialement
    Le tag est bien utile, alors pensez y !

  10. #10
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut De retour de congés
    Merci à tous pour votre aide.

    J'ai finalement mis mes services en manuel, il seront démarrés par l'application via un script spécifique.

    Merci encore

    PAB/31/SAB

Discussions similaires

  1. [C#] Priorité des services Windows
    Par Iloyo dans le forum Services Windows
    Réponses: 4
    Dernier message: 09/11/2010, 00h12
  2. Signification des statuts des licences Windows 7
    Par ram-0000 dans le forum Windows 7
    Réponses: 1
    Dernier message: 31/08/2009, 16h33
  3. Réponses: 2
    Dernier message: 27/04/2006, 15h22
  4. gestion des Services Windows sans .NET
    Par zedoo dans le forum MFC
    Réponses: 1
    Dernier message: 16/05/2005, 23h52

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