Se connecter à la base WMI en tant que, ou "élever" le script en tant que

Signaler
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Salut,

J'utilise pas mal de scripts ces derniers temps pour déployer divers packages sur un réseau. J'ai souvent un problème de droit : si le script est exécuté en tant que machin il n'a pas accès au réseau, s'il est exécuté en tant que user, il n'a pas les droits pour modifier la base de registre (par exemple).

J'ai donc essayé de m'identifier à WMI avec en mettant le user/password en dur de cette façon :

set objLocator = CreateObject("WbemScripting.SWbemLocator")
set objWmi = objLocator.ConnectServer(strComputer, "\root\cimv2", strUserName, strPassword)

Je me suis rendu compte que cette méthode ne marchait que pour les ordinateurs distants, hors mon script se lance sur la machine locale.

Est-il possible soit :
- d'élever le script avec un autre utilisateur lors de son exécution ?
- de se connecter à wmi sur la machine locale avec un autre utilisateur ?

J'aimerais ne pas utiliser d'outils comme psexecs ou autre astuce qui permettrait de lancer le script "en tant que", j'aimerais vraiment que mon script, lancé avec un utilisateur "lambda", obtienne les droits par lui même.

Merci

2 réponses

Messages postés
3
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
3 juillet 2012

j'ai le même problème ?????
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonsoir,

Exemple pour élever les droits.


On Error Resume Next
Const WbemAuthenticationLevelPktPrivacy = 6

Set objNetwork = CreateObject("Wscript.Network")
strLocalComputer = objNetwork.ComputerName

strCredentials = InputBox _
    ("Please enter the user name, a blank space, and then the password:", _
     "Enter User Credentials", objNetwork.UserName)

If strCredentials = "" Then
    Wscript.Quit
End If

arrCredentials = Split(strCredentials," ")
strUser = arrCredentials(0)
strPassword = arrCredentials(1)
strNamespace = "root\cimv2"


strComputer = InputBox _
    ("Please enter the name of the computer you want to connect to:", _
     "Enter Computer Name", objNetwork.ComputerName)
If strComputer = "" Then
    Wscript.QUit
End If

Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
    (strComputer, strNamespace, strUser, strPassword)

objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy





jean-marc