none
WMI Remote OperatingSystem (Win32Shutdown) With User Pass Diffent RRS feed

  • Discussion générale

  • Bonjour a tous
    Je sais bien que c'est pas un forum lier a VBS mais j'ai pas trouvé de forum Microsoft Francais sur le VBS, et donc je pense que le VB6(5) ce rapproche de VBS et je pense (j'espere) que certaine personne connaissant le VBS au sains du forum VB6

    Dans le but de faire une interface HTA (VBS)

    J'utilise l'utilitaire WMI Code Creator pour généré mon code en VBS
    dans cette utilitaire il y a un moyen d'utiliser l'option "remote computer"

    Le code généré par WMI Code Creator est le suivant :
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
    Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ 
      "root\CIMV2", _ 
      strUser, _ 
      strPassword, _ 
      "MS_409", _ 
      "ntlmdomain:" + strDomain) 
    ' Obtain an instance of the the class 
    ' using a key property value.
    Set objShare = objWMIService.Get("Win32_OperatingSystem.ReplaceKeyProperty=ReplacePropertyValue")
    ' Obtain an InParameters object specific
    ' to the method.
    Set objInParam = objShare.Methods_("Win32Shutdown"). _
      inParameters.SpawnInstance_()
     
    ' Add the input parameters.
    ' Execute the method and obtain the return status.
    ' The OutParameters object in objOutParams
    ' is created by the provider.
    Set objOutParams = objWMIService.ExecMethod("Win32_OperatingSystem.ReplaceKeyProperty=ReplacePropertyValue", "Win32Shutdown", objInParam)
    ' List OutParams
    Wscript.Echo "Out Parameters: "
    Wscript.echo "ReturnValue: " & objOutParams.ReturnValue
    et donc ce code ne fonctionne pas, je pense savoir d'ou ça vien mais j'arrive pas savoir quoi mettre a la place de ".ReplaceKeyProperty=ReplacePropertyValue"

    j'ai esssayé diverse chose comme ".Win32Shutdown=6" ou simplement de le supprimer mais cela ne fait pas avancé la chose, j'ai toujours des erreurs sur les deux lignes ou il y a ".ReplaceKeyProperty=ReplacePropertyValue"

    A un moment donner j'ai comme erreur "Privilige non maintenu" et j'ai trouvé ce lien qui en parle http://support.microsoft.com/kb/891865/fr mais c'est du VB.net (impossible pour moi de le convertir en VBS)

    J'ai parcouru en long et en large le net pour trouvé le code miracle, j'ai fini par trouvé ceci
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
     Set objWMIService = objSWbemLocator.ConnectServer(strComputer, "winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\root\CIMV2", strUser, strPassword, "MS_409", "NTLMDomain:" + strComputer) 
     Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
     For Each objOperatingSystem in colOperatingSystems
     ObjOperatingSystem.Reboot()
     Next
    Ce code fonctionne sans probleme en VBScript mais ne fonctionne pas en HTA et le probleme viendrais d'un probleme de privilege (Token ?) mais je vois pas du tout comme faire pour y arriver
    si quelqu'un a la solution ?

    Merci beaucoup d'avance

    A bientot

    Cordialement,
    Xavier
    Alias Troxsa My M@iL
    • Modifié Troxsa vendredi 6 mai 2011 09:38 Mise en page
    • Type modifié Ciprian Duduiala vendredi 3 juin 2011 06:22 pas de réponse
    vendredi 6 mai 2011 09:35

Toutes les réponses

  • Et avec cette version simplifiée, cela fonctionne-t-il ?
     
    --
    Fred
    foleide@free.fr
     
     
    vendredi 6 mai 2011 13:03
  • Bonjour Foleide._

    J'ai essayé mais cela me fait une erreur d’accès, ce qui est complément normal car il y a pas les paramètres de connexion comme le login est le mot de passe
    j'ai essayé de l'ajouté et j'ai des erreurs sur GetObjet

    L'erreur que je rencontre actuellement est : SWbemLocator: Le serveur RPC n'est pas disponible
    Avec le code que j'ai modifé qui est le suivant :

     

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 	
    Set objWMIService = objSWbemLocator.ConnectServer("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & strComputer & "\root\cimv2", strUser, strPassword, "MS_409", "ntlmdomain:" + strDomain) 
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") 
     
    For Each objOperatingSystem in colOperatingSystems 
      objOperatingSystem.Win32Shutdown(1) 
    Next 
    

     

    Merci pour votre aide


    Cordialement,
    Xavier
    Alias Troxsa My M@iL
    vendredi 6 mai 2011 13:36
  • Bonjour,

    Désolé de remonter le sujet, mais je cherche à faire un script de ce genre.

    J'ai le même problème de RPC, auriez-vous trouver la solution?

    jeudi 30 août 2012 14:01
  • Bonjour Guizmail,

    je ne sais plus comment j'ai fait pour contourner le problème, je ne pourrais pas vous donnez la solution en vbs.

    Si vous trouvez la solution n'oublier pas de faire suivre dans ce file :-)


    Cordialement,

    lundi 3 septembre 2012 10:41
  • Bonjour,

    ayant rencontré le même problème et n'ayant pas trouvé de réelle solution, je vais tenter de vous transmettre ce que j'ai pu trouver un peu partout et qui m'a permi de résoudre mon problème :

    1°/tout d'abord checker l'état des services windows associés au RPC, voir s'ils sont bien en mode automatique et démarrés (dans les propriétés de chaque service, il vous faut aussi permettre le redémarrage du service en cas de plantage).

    2°/Ensuite, vérifier que le firewall windows ne bloque pas les accès - si vous utilisez un serveur IIS, vérifier que ce n'est pas bloqué à ce niveau là aussi.

    3°/Vérifier aussi que les composants windows associés au RPC sont bien installés (ajout/suppression de programmes -  ajouter/supprimer des composants windows - installer services de mise en réseau)

    -- après ces trois étapes j'étais toujours avec le même message d'erreur.

    4°/ Si vous associez à la variable StrComputer="nom_de_l'ordinateur" il faut aller dans C:\%systemroot%\system32\drivers\etc puis ouvrir le fichier "hosts" en modification et y ajouter l'ip de l'ordinateur ainsi que son nom; permettant ainsi à votre machine de faire le lien de l'un vers l'autre si nécessaire.

    -- cette solution m'a débloqué

       sinon assigner directement à votre variable StrComputer=IP_De_La_Machine a marché dans mon cas.

    -- Vous n'êtes pas obligés de suivre ces étapes de manière linéaire et sans doute certaines s'avèreront inutiles. Néanmoins, si toutes ces étapes sont validées votre problème devrait être résolu. Dans le cas contraire bon courage !

    Amicalement.


    jeudi 22 août 2013 13:59