Page 1 sur 1

[Ex] Utilisation des class WMI.

Posté : jeu. 11 nov. 2010 13:25
par Jerome
Coucou,

Voici un projet sur lequel je travail depuis quelques temps et qui consistera à exposer aux débutants l'utilisation du WMI dans leurs scripts.

Tout d'abord, pourquoi je me lance dans l'exemple du WMI. C'est simple, c'est maintenant une des choses incontournables que j'utilise dans mes scripts sur mon lieu de travail.

Tout d'abord la définition du mot en lui même. WMI signifie Windows Management Instrumentation.
Concrètement, la WMI est la base même de Windows, dans l'infrastructure de l'opérating system. Beaucoup d'informations en relation avec la WMI sont trouvable à cette page. Je ne m'attarderait pas dessus car tous y est trés bien expliqué (bien que ce soit en anglais).


Passons au but de cet exemple, les class WMI. Les class WMI sont ancrées dans votre system d'exploitation, je ne sait pas si il y a échange d'informations avec les clés de registre, car c'est encore un niveau d'en dessous dans Windows.
Concrètement, les class WMI regroupent toutes les informations sur votre ordinateur. Il en existe énormément, et faire une liste serait fastidieux et une perte de temps. Vous pourrez trouver toute la liste de ces class à cette page de MSDN


J'en arrive à l'utilisation de ces class. Tout d'abord, il vous faut trouver dans la liste sur votre gauche de cette page l'information dans laquel il est possible que ce que vous voulez soit retourné. Dans mon le cadre de mon travail, j'utilise beaucoup ces class car elles me permettent de remonter des informations sur les postes distant qui sont sur mon réseau d'entreprise.
Dans mon exemple, je vais ainsi retourner le nom de mon ordinateur. Evidement comme je ne suis pas sur mon lieu de travail, je vais utiliser l'adresse IP de ma propre carte réseau qui est 127.0.0.1
Dans le cadre d'une utilisation sur un réseaux local, il suffira de mettre l'adresse IP du poste cibler, et si vous êtes équipé comme je le suis d'un serveur DHCP/DNS, alors vous pourrez utilisez aussi le nom de la machine sur le réseau pour vos scripts.

Tout d'abord, il vous faut trouver la class qu'il faut.
Image
Ainsi que l'information qui nous interesse, ici le nom :
Image

Ce qui nous donne :

Code : Tout sélectionner

$strComputer = "127.0.0.1" ;Nom ou adresse IP du poste ciblé

$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& $strComputer & "\root\cimv2") ;création de l'objet

$colComputers = $objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem") ;Définition de la class utilisé

For $objComputer in $colComputers
    ConsoleWrite( @CRLF & "Nom du poste : " & $objComputer.Name & @CRLF) ;Ecriture de l'info choisit dans la class
Next
Nous donnera alors comme résultat :
Image
Il vous est alors possible de remonter autant d'informations que vous le souhaitez, du moment que vous créez un nouvelle objet si vous changez de class.

Exemple :

Code : Tout sélectionner

$strComputer = "127.0.0.1"

$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& $strComputer & "\root\cimv2")

$colComputers = $objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")

For $objComputer in $colComputers
    ConsoleWrite(@CRLF  & "Nom du poste : " & $objComputer.Name & @CRLF)
    ConsoleWrite("Username du poste : " & $objComputer.Username & @CRLF)
    ConsoleWrite("SystemType du poste : " & $objComputer.SystemType & @CRLF)
    ConsoleWrite("TotalPhysicalMemory du poste : " & $objComputer.TotalPhysicalMemory & @CRLF)
    ConsoleWrite("WakeUpType du poste : " & $objComputer.WakeUpType & @CRLF)
    ConsoleWrite("Workgroup du poste : " & $objComputer.Workgroup & @CRLF)
Next
Retournera :
Image

Une dernière chose important à savoir, si vous consultez des informations sur des postes distant du réseau local, le temps d'exécution de votre script et de remonté des informations dépendra de la vitesse de votre connection.



Voila voila,
=> Des Questions ? Posez les ci dessous !



Jérôme

Re: [Ex] Utilisation des class WMI.

Posté : jeu. 11 nov. 2010 19:03
par Tlem
Je profite de ce sujet pour rappeler l’existence de ceci : http://www.autoitscript.fr/forum/viewto ... 328#p30328

Re: [Ex] Utilisation des class WMI.

Posté : jeu. 11 nov. 2010 20:22
par Jerome
Mehhhh, ce que j'ai fait sert a rien alors, j'avais effectuer une recherche préalable pour savoir si un sujet sur ceci existait déjà mais seulement dans [Ex].

:cry:

Re: [Ex] Utilisation des class WMI.

Posté : jeu. 11 nov. 2010 20:36
par Tlem
Tout travail sert.
Ca permet de rafraichir certains sujets. ;)