[Ex] Utilisation des class WMI.

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

[Ex] Utilisation des class WMI.

#1

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Utilisation des class WMI.

#2

Message par Tlem »

Je profite de ce sujet pour rappeler l’existence de ceci : http://www.autoitscript.fr/forum/viewto ... 328#p30328
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [Ex] Utilisation des class WMI.

#3

Message 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:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Utilisation des class WMI.

#4

Message par Tlem »

Tout travail sert.
Ca permet de rafraichir certains sujets. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre