Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

spécifier un utilisateur pour executer une requette WMI ...

9 réponses
Avatar
Denis
Bonsoir à tous !

Je cherche en vain le moyen d'executer un script avec un nom / mot de passe
différent de l'utilisateur qui lance le script ....

Auriez vous une idée sur le comment faire ? (les cibles sont sous 2K, 2K3,
XP ; l'origine étant sous XP.)

Merci d'avance pour votre aide éventuelle !



Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

wscript.echo str_ram
###############################

9 réponses

Avatar
Thierry
Salut,

Question déjà posée et répondu dans le forum ;o)

Va sur Google.fr et cherche Jean-claude bellamy
Ensuite tu vas dans vbscript exemple et tu trouveras xrunas

Amicalement
Thierry


-----Message d'origine-----
Bonsoir à tous !

Je cherche en vain le moyen d'executer un script avec un
nom / mot de passe

différent de l'utilisateur qui lance le script ....

Auriez vous une idée sur le comment faire ? (les cibles
sont sous 2K, 2K3,

XP ; l'origine étant sous XP.)

Merci d'avance pour votre aide éventuelle !



Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc
& "/root/cimv2")

Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl
(objItem.TotalPhysicalMemory) / 1024)

Next

wscript.echo str_ram
###############################


.



Avatar
Cobra
Hello Denis,

C'est avec beaucoup de plaisir que je peux te dire la SEULE chose que je
connais en scripting (j'espère ne pas me tromper quand même). Je l'ai lu il
n'y a pas longtemps et impossible de me rappeller où. Tu n'as pas d'autres
choix que de travailler avec les SID associé aux comptes et non pas les
comptes directement.

@+




"Denis" a écrit dans le message de news:
41ed640a$0$25785$
Bonsoir à tous !

Je cherche en vain le moyen d'executer un script avec un nom / mot de
passe différent de l'utilisateur qui lance le script ....

Auriez vous une idée sur le comment faire ? (les cibles sont sous 2K, 2K3,
XP ; l'origine étant sous XP.)

Merci d'avance pour votre aide éventuelle !



Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

wscript.echo str_ram
###############################




Avatar
Jean-Claude BELLAMY
Dans le message news:41f40178$0$26230$ ,
Cobra <kevlarChezWanadoo.fr> s'est ainsi exprimé:
"Denis" a écrit dans le message de news:
41ed640a$0$25785$
Je cherche en vain le moyen d'executer un script avec un nom / mot de
passe différent de l'utilisateur qui lance le script ....
Auriez vous une idée sur le comment faire ? (les cibles sont sous
2K, 2K3, XP ; l'origine étant sous XP.)
[...]
Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

wscript.echo str_ram
###############################


[...]
C'est avec beaucoup de plaisir que je peux te dire la SEULE chose que
je connais en scripting (j'espère ne pas me tromper quand même). Je
l'ai lu il n'y a pas longtemps et impossible de me rappeller où. Tu
n'as pas d'autres choix que de travailler avec les SID associé aux
comptes et non pas les comptes directement.
QUOI ?

????????????????????????
Tu te TROMPES lourdement !!!

Il est parfaitement possible de définir un couple username/password lors
d'une connexion WMI !
Et je ne vois pas ce que les SID viennent faire ici !


Il suffit d'utiliser l'autre syntaxe gérant les objets WMI :

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = objLocator.ConnectServer (Server, "root/cimv2", UserName,
Password)

' éventuellement définir le degré d'impersonnalisation et de privilèges:
Service.Security_.impersonationlevel = 3
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", TRUE

' Accès à la classe désirée :
Set colItems = Service.ExecQuery("Select * from
win32_LogicalMemoryConfiguration") ...
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*


Avatar
Cobra
Je suis vraiment désolé, je savais qu'il fallait pas que je "parle" avant
d'être fort, ça partait d'un bon sentiment...




"Jean-Claude BELLAMY" a écrit dans le
message de news:
Dans le message news:41f40178$0$26230$ ,
Cobra <kevlarChezWanadoo.fr> s'est ainsi exprimé:
"Denis" a écrit dans le message de news:
41ed640a$0$25785$
Je cherche en vain le moyen d'executer un script avec un nom / mot de
passe différent de l'utilisateur qui lance le script ....
Auriez vous une idée sur le comment faire ? (les cibles sont sous
2K, 2K3, XP ; l'origine étant sous XP.)
[...]
Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

wscript.echo str_ram
###############################


[...]
C'est avec beaucoup de plaisir que je peux te dire la SEULE chose que
je connais en scripting (j'espère ne pas me tromper quand même). Je
l'ai lu il n'y a pas longtemps et impossible de me rappeller où. Tu
n'as pas d'autres choix que de travailler avec les SID associé aux
comptes et non pas les comptes directement.
QUOI ?

????????????????????????
Tu te TROMPES lourdement !!!

Il est parfaitement possible de définir un couple username/password lors
d'une connexion WMI !
Et je ne vois pas ce que les SID viennent faire ici !


Il suffit d'utiliser l'autre syntaxe gérant les objets WMI :

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = objLocator.ConnectServer (Server, "root/cimv2", UserName,
Password)

' éventuellement définir le degré d'impersonnalisation et de privilèges:
Service.Security_.impersonationlevel = 3
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", TRUE

' Accès à la classe désirée :
Set colItems = Service.ExecQuery("Select * from
win32_LogicalMemoryConfiguration") ...
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*






Avatar
GOWAP
C'est quoi "Service.Security_" ?


"Jean-Claude BELLAMY" a écrit dans le
message de news:
Dans le message news:41f40178$0$26230$ ,
Cobra <kevlarChezWanadoo.fr> s'est ainsi exprimé:
"Denis" a écrit dans le message de news:
41ed640a$0$25785$
Je cherche en vain le moyen d'executer un script avec un nom / mot de
passe différent de l'utilisateur qui lance le script ....
Auriez vous une idée sur le comment faire ? (les cibles sont sous
2K, 2K3, XP ; l'origine étant sous XP.)
[...]
Voici le script :
###############################
Set objWMIService = GetObject("winmgmts://" & lib_uc & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from
win32_LogicalMemoryConfiguration")
For Each objItem In colItems
str_ram = Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

wscript.echo str_ram
###############################


[...]
C'est avec beaucoup de plaisir que je peux te dire la SEULE chose que
je connais en scripting (j'espère ne pas me tromper quand même). Je
l'ai lu il n'y a pas longtemps et impossible de me rappeller où. Tu
n'as pas d'autres choix que de travailler avec les SID associé aux
comptes et non pas les comptes directement.
QUOI ?

????????????????????????
Tu te TROMPES lourdement !!!

Il est parfaitement possible de définir un couple username/password lors
d'une connexion WMI !
Et je ne vois pas ce que les SID viennent faire ici !


Il suffit d'utiliser l'autre syntaxe gérant les objets WMI :

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = objLocator.ConnectServer (Server, "root/cimv2", UserName,
Password)

' éventuellement définir le degré d'impersonnalisation et de privilèges:
Service.Security_.impersonationlevel = 3
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", TRUE

' Accès à la classe désirée :
Set colItems = Service.ExecQuery("Select * from
win32_LogicalMemoryConfiguration") ...
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*






Avatar
GOWAP
Question bis...

comment je modifie le :

* Set objWMIService = GetObject("winmgmts:" & SvrNom & "rootcimv2")
* Set colItems = objWMIService.ExecQuery("Select * from Win32_Service",,48)

pour avoir un acces a un utilisateur/mot de passe ?

J'ai testé un truc comme ca qui semble marcher...

* Set Locator = CreateObject("WbemScripting.SWbemLocator")
* Set Service = Locator.ConnectServer (SvrNom, "root/cimv2", "adminuser",
"motdepasse")
* Set colItems = Service.ExecQuery("Select * from Win32_Service",,48)

Comment puis-je utiliser le même principe pour le "WshShell.Run" afin que le
même utilisateur soit utiliser...
Avec le colItems ci-dessus, je peux avoir les informations de démarage d'un
service sur un poste distant ; connaissez vous une methode pour le démarrer
(pour l'instant j'utiliser le WshShell.Run avec un programme du recource
kit, mais il y a surement un méthode pur VBS).

Merci.


Il suffit d'utiliser l'autre syntaxe gérant les objets WMI :

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = objLocator.ConnectServer (Server, "root/cimv2", UserName,
Password)

' éventuellement définir le degré d'impersonnalisation et de privilèges:
Service.Security_.impersonationlevel = 3
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", TRUE

' Accès à la classe désirée :
Set colItems = Service.ExecQuery("Select * from
win32_LogicalMemoryConfiguration") ...
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*




Avatar
Jean-Claude BELLAMY
Dans le message news:OR$ ,
GOWAP <gowap@@@fr.fm> s'est ainsi exprimé:

C'est quoi "Service.Security_" ?


"Security_" est une propriété d'un objet SWbemObject

C'est elle-même un objet SWbemSecurity

Copier-coller du SDK WMI :

The Security_ property of the SWbemObject object is used
to read, or set the security settings for an SWbemObject
object. This property is an SWbemSecurity object.
The security settings in this object do not indicate the
authentication, impersonation, or privilege settings made
on a connection to Windows Management Instrumentation
(WMI), or the security in effect for the proxy when an
object is delivered to a sink in an asynchronous call.
For more information, see Maintaining WMI Security.

Setting the Security_ property of an SWbemObject
object to NULL grants unlimited access to everyone
all the time. For more information, see SWbemSecurity."

et plus loin :

"The SWbemSecurity object reads or sets security settings,
such as privileges, COM impersonations, and authentication
levels assigned to an object. The SWbemLocator,
SWbemServices, SWbemObject, SWbemObjectSet,
SWbemObjectPath, SWbemLastError, and SWbemEventSource
objects have a Security_ property, which is the SWbemSecurity
object. When you retrieve an instance or view the WMI
security log, you might need to set the properties of the
Security_ object.

The VBScript CreateObject call cannot create the Security
object. The security settings in this object do not identify
the authentication, impersonation, or privilege settings on a
connection to WMI, or the security in effect for the proxy
when an object is delivered to a sink in an asynchronous call.
For more information, see Maintaining WMI Security."


The SWbemSecurity object has the following properties.
AuthenticationLevel
Numeric value that defines the COM Authentication
level assigned to this object. This setting determines
how you protect information sent from WMI.

ImpersonationLevel
Numeric value that defines the COM Impersonation
level assigned to this object. This setting determines
if processes owned by WMI can detect or use your security
credentials when making calls to other processes.

Privileges
The SWbemPrivilegeSet object that defines privileges
for this object. For more information, see Running with
Special Privileges.

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*

Avatar
Denis
Bonsoir à tous !

J'ai voulu mettre en oeuvre cette solution, mais je me heurte à un problème
étrange ....

-> donc ci-dessous, je m'authentifie .... pas de problème ...
Set objwbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objConnection = objwbemLocator.ConnectServer("R32-01", "rootcimv2",
"Username","password")

-> là, j'exécute ma 1 ère requête pour trouver la quantité de mémoire ....
pas de problème ...
Set colItems = objConnection.ExecQuery("Select * from
Win32_LogicalMemoryConfiguration")
For Each objItem In colItems
WScript.Echo Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

-> C'est lors de la 2ème requête sensée me rapporter la liste des logiciels
que ça marche pas :-( alors que c'est le même principe que la 1ère ....
Set colItems = objConnection.ExecQuery("SELECT * FROM Win32_Product")
For Each objItem In colItems
WScript.Echo objItem.Name
Next

Par contre, si j'execute la 2ème requête sans le contexte d'authentification
(comme ci-dessous), pas de soucis, ça fonctionne
(en prenant soins de m'etre logué en tant qu'administrateur,naturellement
...)

Set objWMIService = GetObject("winmgmts:R32-01rootCIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Product")

For Each objItem In colItems
Wscript.Echo objItem.Name
Next

Auriez vous une idée du pourquoi ça fonctionne pas pour me donner la liste
des logiciels ?

Par avance, merci !
Denis.




"Jean-Claude BELLAMY" a écrit

Il est parfaitement possible de définir un couple username/password lors
d'une connexion WMI !


Il suffit d'utiliser l'autre syntaxe gérant les objets WMI :

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = objLocator.ConnectServer (Server, "root/cimv2", UserName,
Password)

' éventuellement définir le degré d'impersonnalisation et de privilèges:
Service.Security_.impersonationlevel = 3
Service.Security_.Privileges.AddAsString "SeSecurityPrivilege", TRUE

' Accès à la classe désirée :
Set colItems = Service.ExecQuery("Select * from
win32_LogicalMemoryConfiguration") ...
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*




Avatar
Denis
SNIF !!!

Personne pour m'orienter ?

:-(


"Denis" a écrit dans le message de news:
41f9232a$0$6480$
Bonsoir à tous !

J'ai voulu mettre en oeuvre cette solution, mais je me heurte à un
problème étrange ....

-> donc ci-dessous, je m'authentifie .... pas de problème ...
Set objwbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objConnection = objwbemLocator.ConnectServer("R32-01", "rootcimv2",
"Username","password")

-> là, j'exécute ma 1 ère requête pour trouver la quantité de mémoire ....
pas de problème ...
Set colItems = objConnection.ExecQuery("Select * from
Win32_LogicalMemoryConfiguration")
For Each objItem In colItems
WScript.Echo Int(CDbl(objItem.TotalPhysicalMemory) / 1024)
Next

-> C'est lors de la 2ème requête sensée me rapporter la liste des
logiciels que ça marche pas :-( alors que c'est le même principe que la
1ère ....
Set colItems = objConnection.ExecQuery("SELECT * FROM Win32_Product")
For Each objItem In colItems
WScript.Echo objItem.Name
Next

Par contre, si j'execute la 2ème requête sans le contexte
d'authentification (comme ci-dessous), pas de soucis, ça fonctionne
(en prenant soins de m'etre logué en tant qu'administrateur,naturellement
...)

Set objWMIService = GetObject("winmgmts:R32-01rootCIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Product")

For Each objItem In colItems
Wscript.Echo objItem.Name
Next

Auriez vous une idée du pourquoi ça fonctionne pas pour me donner la liste
des logiciels ?

Par avance, merci !
Denis.