Se connecter à la base WMI en tant que, ou "élever" le script en tant que
Utilisateur anonyme
-
29 sept. 2009 à 15:07
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
30 janv. 2012 à 19:16
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
A voir également:
Se connecter à la base WMI en tant que, ou "élever" le script en tant que
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 30 janv. 2012 à 19:16
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