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 :

Erreur avec MSNdis_DeviceWakeOnMagicPacketOnly


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 55
    Par défaut Erreur avec MSNdis_DeviceWakeOnMagicPacketOnly
    Bonjour,

    J'essaie de faire un script batch qui va activer l'option wol après standby.

    Pour ceci, j'utilise un script VBS qui fonctionne très bien quand je l'exécute en double-cliquant dessus.

    Par contre quand j'essaie une exécution automatique (fichier dans le dossier startup de l'utilisateur, registry "Run"/"RunOnce") la query sur MSNdis_DeviceWakeOnMagicPacketOnly me sort une erreur.

    L'erreur est la suivante :

    Error : Not supported
    Source : SWbemServicesEx

    Google ne m'a pas aidé jusqu'à présent, voilà pourquoi je me tourne vers vous.

    Le script complet utilisé est le suivant (trouvé sur internet, fonctionne lorsque je l'exécute Intéractivement)

    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
    ' http://forums.whirlpool.net.au/forum-replies-archive.cfm/919407.html
    
    ' http://msdn.microsoft.com/en-us/library/aa392301(VS.85).aspx
    
    Const wbemFlagForwardOnly = &h20
    
    ' "." --> computer running the script
    strComputer = "."
    
    WScript.Echo "Begin"
    
    OSSettings
    
    WScript.Echo "End"
    
    
    Sub OSSettings
    
    	Set objWMIservice1 = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    	Set Colitems1 = objWMIService1.ExecQuery("Select * From Win32_NetworkAdapter")
    	Set objWMIService2 = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
    	Set colItems2 = objWMIService2.ExecQuery("SELECT * FROM MSPower_DeviceEnable", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
    	Set colItems3 = objWMIService2.ExecQuery("SELECT * FROM MSPower_DeviceWakeEnable", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
    	Set colItems4 = objWMIService2.ExecQuery("SELECT * FROM MSNdis_DeviceWakeOnMagicPacketOnly", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
    
    	For Each objItem1 in Colitems1
    		' tester qu'on a bien à faire à une carte réseau filiaire et d'un certain type
    		If objitem1.adaptertypeID = 0 and objitem1.netconnectionid <> "" and (objitem1.adaptertypeID = 0 and ( instr(1,objitem1.netconnectionid,"wireless",1) = 0)) and objitem1.adaptertypeID = 0 and objitem1.manufacturer <> "Microsoft" then
    			
    			' enable "Allow the computer to turn off this device to save power"
    			For Each objItem2 In colItems2
    				IF LEN(objitem1.PNPDeviceID) <= LEN(objItem2.InstanceName) THEN
    					IF UCASE(objItem1.PNPDeviceID) = LEFT(UCASE(objItem2.InstanceName), LEN(objitem1.PNPDeviceID)) THEN
    					objitem2.enable = "1"
    					objitem2.Put_()
    					
    						' enable "Allow this device to wake the computer"
    						For Each objItem3 In colItems3
    							IF LEN(objitem1.PNPDeviceID) <= LEN(objItem3.InstanceName) THEN
    								IF UCASE(objItem1.PNPDeviceID) = LEFT(UCASE(objItem3.InstanceName), LEN(objitem1.PNPDeviceID)) THEN
    								objitem3.enable = "1"
    								objitem3.Put_()
    								
    									' enable "Allow only management stations to bring the computer out of standby"
    									For Each objItem4 In colItems4
    										IF LEN(objitem1.PNPDeviceID) <= LEN(objItem4.InstanceName) THEN
    											IF UCASE(objItem1.PNPDeviceID) = LEFT(UCASE(objItem4.InstanceName), LEN(objitem1.PNPDeviceID)) THEN
    											objItem4.EnableWakeOnMagicPacketOnly = "1"
    											objitem4.put_()
    											END IF
    										END IF
    									NEXT
    								END IF
    							END IF
    						NEXT
    					END IF
    				END IF
    			NEXT
    		END IF
    	NEXT
    
    End Sub
    La ligne en erreur est celle en gras.

    Merci d'avance de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 55
    Par défaut
    De plus amples infos :

    le script suivant (liste les options actuelles de DeviceWakeOnMagicPacketOnly) ne fonctionne pas non plus, retourne également une erreur, mais pas tout à fait la même. A nouveau si je double-clique dessus, c'est ok.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strServer = "."
     
    Set objWMI = GetObject("winmgmts://" & strServer & "/root\WMI")
    Set objInstances = objWMI.InstancesOf("MSNdis_DeviceWakeOnMagicPacketOnly",48)
     
    For Each objInstance in objInstances
       WScript.Echo objInstance.getObjectText_
    Next

  3. #3
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Si tu le met dans un dossier lié à l'utilisateur, je te suggère d'utiliser plutot le raccourci démarrage.

    Pour bien faire, le mieux c'est de laisser RunOnce et de mettre le script dans un dossier non lié à l'utilisateur (c:\ par exemple)

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Avec quel interpréteur ton racourci lance le script ?
    Il en existe deux : cscript et wscript.
    En général, wscript est exécuté par défaut lorsque tu double clique sur le script.
    Je ne sais pas ce que met windows dans son raccourci.

    Edit :
    Je viens d'essayer de changer la cible du raccourci ainsi, et cela te permet de lancer le script avec wscript ou cscript, tu peux faire des essais voir si cela corrige la problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd /k wscript "C:\...\test.vbs"
    Ou alors c'est un problème de droit.

    Au fait les essais tu les as fait sur le même poste ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 55
    Par défaut
    J'ai résolu (ou plutôt contourné) mon problème.

    J'ai créer un fichier batch qui :

    1. Copie le fichier wol.vbs depuis le partage réseau vers C:\temp\wol.vbs
    2. Exécuter le script (sans spécifier de moteur de script, sinon ca ne marche pas)
    3. L'affaire est belle, pas d'erreur !

    Le fichier batch est exécuté automatiquement par un agent de déploiement d'application au démarrage du PC.

    Je ne sais qu'est ce qui se passe avec ce script, mais j'ai une solution qui fonctionne.
    Merci de vos réponses

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    En fait, ce que j'ai voulu te dire c'est que les éléments de démarrage ne sont pas traités en même temps :

    certains avant que la session utilisateur soit ouverte (donc les bureau, mes documents ... ne sont pas encore définis, donc inaccessible)

    Avec c:\temp ou autre ca marche a tous les coups, sinon faut lancer à partir de démarrer programme démarrage ^^

    voilà j'espère que c'était plus clair cette fois

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 55
    Par défaut
    Citation Envoyé par spantemonium Voir le message
    En fait, ce que j'ai voulu te dire c'est que les éléments de démarrage ne sont pas traités en même temps :

    certains avant que la session utilisateur soit ouverte (donc les bureau, mes documents ... ne sont pas encore définis, donc inaccessible)

    Avec c:\temp ou autre ca marche a tous les coups, sinon faut lancer à partir de démarrer programme démarrage ^^

    voilà j'espère que c'était plus clair cette fois
    Oui c'est très clair cette fois je comprends mieux

    Par contre le test de le mettre dans le dossier démarrage du menu démarrer->programme ne fonctionnait pas...
    De même que mettre un raccourcis dans le dossier démarrage du menu démarrer->programme qui pointait sur le fichier de C:\temp ne fonctionnait pas.

    Enfin je n'ai pas cherché d'autres explications, mais ca fonctionne maintenant donc je suis content

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

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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