WMI est une recommandation de l'industrie visant à développer une technologie standardisée pour accéder aux informations de gestion dans les environnements d'entreprise. Ces informations incluent l'état de la mémoire système, une liste des applications client actuellement installées et d'autres données sur l'état du client.
WMI est une architecture de gestion de système évolutive qui utilise une interface orientée objet unifiée, basée sur des normes et extensible. Il fournit une méthode standard d'interaction avec les informations de l'administrateur système et l'API WMI sous-jacente, utilisée principalement par les développeurs d'applications de gestion système et les administrateurs système pour accéder et exploiter les informations de gestion système.
WMI peut être utilisé pour générer des outils permettant d'organiser et de gérer les informations système, permettant aux administrateurs système de surveiller de plus près les activités du système.
WMI fournit un riche ensemble de services de gestion système intégrés au système d'exploitation Microsoft Windows et est désormais utilisé par un grand nombre d'applications, de services et de périphériques pour fournir des capacités de gestion complètes pour les opérations informatiques et les organisations de support produit. L'utilisation de systèmes de gestion basés sur WMI apporte un environnement informatique plus fiable et une plus grande fiabilité du système, réduisant ainsi les dépenses de l'entreprise.
Le grand nombre de spécifications fournies par WMI implémentent les tâches de gestion suivantes pour de nombreuses applications haut de gamme, telles que Microsoft Exchange, Microsoft SQL Server et Microsoft Internet Information Services (IIS).
1. Surveiller les performances des applications
2. Détecter les goulots d’étranglement ou les échecs
3. Gérer et configurer les applications
4. Interroger les données d'application (à l'aide de traversées et de requêtes objet-relationnelles)
5. Effectuez des opérations de gestion locales ou à distance transparentes
Ci-dessous, nous utilisons un exemple pour illustrer les fonctions puissantes de WMI. En prenant vb6 comme colonne :
Référence « Bibliothèque de scripts Microsoft WMI V1.1 »
Le code est le suivant :
Option ExplicitDim WithEvents Sink As SWbemSinkDim j As Integer' function: Utilisez les composants wmi pour obtenir des informations sur l'ordinateur. Chaque petite fonction est écrite séparément pour que tout le monde puisse la vérifier. sDrive en tant que StringDim sValue As StringDim dblSize As DoubleDim Obj As Variant Dim lIndex As Long Set oWMINameSpace = GetObject("winmgmts:") 'Obtenir des informations sur le lecteur en cas d'erreur Reprendre NextSet ObjSet = oWMINameSpace.InstancesOf("Win32_DiskDrive") pour chaque objet dans la liste ObjSet AddItem Obj5. .Légende & " - " & BytesToMegabytes(Obj.Size) & " GB"Next 'Obtenir des informations détaillées sur chaque lecteur en cas d'erreur GoTo ErrorHandler'Set oWMINameSpace = GetObject("winmgmts:")Set oLogicalDiskSet = oWMINameSpace.InstancesOf("Win32_LogicalDisk")Pour chaque oLogicalDisk dans oLogicalDiskSet en cas d'erreur Reprendre le sDrive suivant = oLogicalDisk.deviceid ListView1.ListItems.Add , , sDrive lIndex = ListView1.ListItems.Count sValue = oLogicalDisk.Description & "" ListView1.ListItems(lIndex).SubItems(1) = sValue sValue = oLogicalDisk.FileSystem & "" ListView1.ListItems(lIndex).SubItems(2) = sValue sValue = oLogicalDisk.VolumeName & "" ListView1.ListItems(lIndex).SubItems(3) = sValue sValue = oLogicalDisk.VolumeSerialNumber & "" ListView1.ListItems(lIndex).SubItems (4) = sValue sValue = oLogicalDisk.Size & "" If IsNumeric(sValue) ThendblSize = BytesToMegabytes(CDbl(sValue))sValue = CStr(dblSize) & " MB" End If ListView1.ListItems(lIndex).SubItems(5) = sValueNext CleanUp : Définir oLogicalDisk = NothingSet oLogicalDiskSet = NothingSet oWMINameSpace = NothingExit Sub ErrorHandler:MsgBox "" & Err.Description GoTo CleanUp End Sub Private Sub Command1_Click()Déchargez MeEnd Sub Private Function BytesToMegabytes (Octets en double) As Double Dim dblAns As Double dblAns = (Octets / 1024) / 1024 octets vers mégaoctets = Format(dblAns, "###,###,##0.00")End Function Private Sub Command2_Click()Dim oWMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim Obj As Variant Set oWMINameSpace = GetObject("winmgmts:" )'Ensemble du système d'exploitation SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem") Pour chaque système dans SystemSet List1.AddItem System.Caption List1.AddItem System.Manufacturer List1.AddItem System.BuildType & "" 'Il semble que List1.AddItem System.Version List1.AddItem ne puisse pas être pris sous Win9x System.SerialNumberNext'cpuSet ObjSet = oWMINameSpace.InstancesOf("Win32_Processor") Pour chaque objet dans ObjSet List2.AddItem Obj.Caption List2.AddItem Obj.currentclockspeed & " Mhz"Next End Sub Private Sub Command3_Click()Dim oWMINameSpace As SWbemServicesDim ObjSet As VariantDim Obj As VariantDim Adaptateur As Variant 'Ensemble de mémoire oWMINameSpace = GetObject("winmgmts:")Set ObjSet = oWMINameSpace.InstancesOf("Win32_PhysicalMemory")Dim i As String For Each Obj In ObjSet List3.AddItem BytesToMegabytes(Obj.capacity) & " MB" & " Chip"Next 'Carte réseau Set Sink = Nouvel adaptateur SWbemSink Set = GetObject("winmgmts:")Adapter.InstancesOfAsync Sink, "Win32_NetworkAdapter" End Sub Private Sub Form_Load()j = 0End Sub Private Sub Sink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet) Dim Adapter As Variant'Obtenir toutes les informations sur l'adaptateur Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & j & "") List4.AddItem Adapter.Description If IsNull(Adapter.MACAddress) Then List4.AddItem "Aucune adresse MAC" List4.AddItem " " Sinon List4.AddItem "Mac : " et Adapter.MACAddress List4.AddItem ""Fin si j = j + 1End Sub
Cet article est présenté ici. Pour plus d'informations, vous pouvez vous référer à cet article : http://technet.microsoft.com/en-us/library/ee198932.aspx.