Execution d'une tache Wmi - permission refusé [Résolu]

Messages postés
11
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
1 février 2012
- - Dernière réponse : benzure
Messages postés
11
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
1 février 2012
- 1 févr. 2012 à 17:24
Bonjour

j'éssai d'éxécuter une tache WMI via un script vbs depuis un serveur A vers un serveur B
.

Le but est de créer un repertoire sur le serveur B

Voici le code:

 
Dim objWMIService, nResult
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" & shareserver & "\root\cimv2" )
 
 
   '-- create a local folder
nResult = CreateLocalFolder(objWMIService, sharepath)
    If (nResult <> 0) Then
        Err.Raise 1, "Local folder creation error = " & nResult
        Exit Sub
End If
 
 
 
 
'******************************************************************
' CreateLocalFolder - creates a new local folder
' ----------
' objWMIService - WMI serice instance
' sharepath - path to local folder, for ex.: "C:\MyFolder"
' ----------
' return value - Error code. O for OK
 
Function CreateLocalFolder(ByRef objWMIService, ByVal sharepath)
    Dim objProcess, nProcessId, nResult
 
    Set objProcess = objWMIService.Get("Win32_Process")
 
    ' --- try to start a process for a folder creation
    nResult = objProcess.Create("cmd.exe /c md " & sharepath, Null, Null, nProcessId)
 
    If (nResult <> 0) Then
        CreateLocalFolder = nResult
        Exit Function
    End If
 
    Dim arrItems, objItem, boolFound
 
    ' --- wait for folder creation completion
    Do While (True)
        Set arrItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId=" & nProcessId)
 
        boolFound = False
        For Each objItem In arrItems
            boolFound = True
            Exit For
        Next 
 
        If (boolFound = False) Then Exit Do
    Loop
 
    CreateLocalFolder = 0
End Function



Le vbs fonctionne correctement tant qu'il est executé par un utilisateur du domaine où sont situés les serveurs.
Mais je cherche à lancer ce vbs par un utilisateurs d'un autre domaine
D'ou le problème de permission.!!


Je ne sais pas quoi ajouter à la ligne suivante, pour spécifier un utilisateur et mot de passe

 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" & shareserver & "\root\cimv2" )
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
1 février 2012
3
Merci
Merci pour le tuyau,
j'avais consulté cette page, sans creuser assez

J'ai donc appliqué la chose suivante:


Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
   (shareserver, "root\cimv2", "domaine\administrateur", "password")
objSWbemServices.Security_.ImpersonationLevel = 3


Ca fonctionne bien.

Maintenant , je rencontre un autre soucis lors de l execution de la commande suivante sur le serveur A:
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)


En effet, le serveur A est dans un domaine 'domaine1' et l'utilisateur ( du domaine 'domaine2' )se connecte en rdp sur celui ci. Et Il n'a pas de droit suffisant pour creer un fichier en local sur le serveur A

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de benzure
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
66
0
Merci
Fort, ca de passer par un WMI pour faire un pauvre FSO.CreateFolder

non ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
11
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
1 février 2012
0
Merci
Oui mais le CreateFolder n'est pas effectué sur le serveur A
Le folder doit etre créé sur le serveur B

et je ne veux pas utiliser de chemin en UNC pour ne pas utiliser les partages$
Commenter la réponse de benzure
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
267
0
Merci
Alors (puisque c'est ta voie) :
Lis donc ceci, entre autres


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
267
0
Merci
Bé !
S'il n'a pas ce droit, il ne l'a pas et ne peut "se l'octroyer seul"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
11
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
1 février 2012
0
Merci
Je sais bien,

L'idée était de voir s'il existait une solution de contournemant , en passant par des credentials

J'ai fait autrement.
Comme l'utilisateur se logue sur le machine, il lui est assigné automatiquement un environnement TEMP dont il a les droits d'écriture.
J'ai déplacé la création du fichier dedans

Merci pour l'aide
Commenter la réponse de benzure

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.