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 :

Shutdown si Pc non utilisé


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 121
    Par défaut Shutdown si Pc non utilisé
    Bonjour,

    J'ai un script qui permet d'eteindre mes postes si personne n'est connectée dessus.
    Je lance le script via un run as pour être connecté en admin du domain car je me connecte à distance.

    Le script fonctionne parfaitement sous un environnement XP mais malheureusement, il ne fonctionne pas sous Windows 7.
    Le script bloque au niveau "Set objWMIService" mais je ne trouve pas de solution
    Pouvez-vous m'aider ?

    Voici 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
     
    Dim  strHost, objWMIService, objComputer, colComputer, colOperatingSystems, objOperatingSystem
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Ftxt = FSO.OpenTextFile("c:\Utilitaire\strhost.txt")
     
    Do While Not Ftxt.AtEndOfStream
          strhost = Ftxt.Readline
    Loop
     
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strhost & "\root\cimv2")
    Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
    For Each objComputer in colComputer
    if isNull(objComputer.UserName) or objComputer.UserName = "" then
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
    strhost & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
    'ObjOperatingSystem.Reboot()
    Next 
    msgbox ("Le redémarrage de " & strHost & " est en cours")
    else
     
    msgbox("Redémarrage impossible " & objComputer.UserName & " est logué")
     
    end if
    Next

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Bonjour;

    Franchement, je ne vois pas comment cela pourrait marcher sous Win XP ou toute autre version de Windows et ce pour cause :
    A partir de la ligne 13, le contenu de la variable strHost prend pour valeur la dernière ligne dans le fichier texte strHost.txt sauf si tu disposes d'un seul PC à piloter.

    D'autre part, si tu travailles sous W7 64, il se peut que la référence ("Select * from Win32_ComputerSystem") , à mon avis, ne convient pas avec un système 64 bits.

    Le code devrait être revu du point de vue structure(ordre des étapes à accomplir)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 121
    Par défaut
    Le fichier strhost contient 1 seule machine à la fois.

    Je travaille sur des machines sous Windows 7 32bits

    J'ai désactivé L'UAC sur la machine de test.
    Si je fais apparaître des msgbox dans mon script, ca ne passe pas la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strhost & "\root\cimv2")

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut l_autodidacte et ponpon17430

    Citation Envoyé par ponpon17430
    Le fichier strhost contient 1 seule machine à la fois.
    Donc tu peux enlever le Do While Not Ftxt.AtEndOfStream et le Loop qui laissait penser à un fichier de plusieurs lignes.

    Citation Envoyé par ponpon17430
    Si je fais apparaître des msgbox dans mon script, ça ne passe pas la ligne : Set objWMIService = GetObj.....
    Le MsgBox strhost juste avant cette ligne te renseigne t-il correctement du contenu de cette variable ?
    Si oui, enregistres ton script et dans la fenêtre de propriété, onglet Compatibilité coches la case Exécuter en mode de comptabilité pour, puis choisir: Windows XP (Service Pack 3) ou ..... (Service Pack 2).
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 121
    Par défaut
    Je ne peux pas faire le mode de compatibilité car mon poste à moi est sous XP.
    Concernant le fichier strhost oui il me renseigne bien le nom de la machine.

    Je crois que j'ai oublié de dire que le script lancé sur une machine sous Windows 7 fonctionne.
    Il y a QUE lorsque je veux le lancer depuis mon poste (XP) ca ne fonctionne pas pour tenter de me connecter sur une machine sous Windows 7


    voici le message d'erreur :

    Le serveur distant n'existe pas ou n'est pas disponible :'GetObject'
    code 800A01CE

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    ton poste sous seven est-il bien configuré ?
    voir ici
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

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

Discussions similaires

  1. Compatibilité et argument non utilisé
    Par progfou dans le forum C++
    Réponses: 4
    Dernier message: 04/01/2008, 13h20
  2. MSSQL 2000-2005 tables ou vues non utilisé
    Par mikaeru dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/11/2007, 08h46
  3. [OSF] setuid non utilisé
    Par ejl07 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 19/10/2007, 10h20
  4. Swap non utilisé
    Par Finidrigoler dans le forum Administration système
    Réponses: 7
    Dernier message: 10/07/2007, 21h07
  5. fermer un Access non utilisé
    Par GAGNON dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 13h08

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