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

VBS & Wmi

4 réponses
Avatar
Bernard59139
Bonjour

J'ai un problème de compréhension pour lister certaines valeurs obtenues via WMI.

Le script suivant fonctionne très bien, mais je souhaiterai faire un équivalent en récupérant tout ce qui est possible
sans avoir à écrire chaque couple name/value.
Ou remplacer ce qu'il y a dans dans la boucle *FOR I=..../NEXT* par quelque chose de plus complet.

Merci d'avance
Bernard


'--------------------------------------------------------------------------------------------
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where
IPEnabled=TRUE")
ip = ""
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
ip = ip + " nom : " & IPConfig.caption(i) + chr(10)
ip = ip + " Description : " & IPConfig.description(i) & chr(10)
ip = ip + " Dnsdomain : " & IPConfig.dnsdomain(i) & chr(10)
ip = ip + " DnsHostname : " & IPConfig.dnshostname(i) & chr(10)
ip = ip + " Dhcpserver : " & IPConfig.dhcpserver(i) & chr(10)
ip = ip + " Dhcpenabled : " & IPConfig.dhcpenabled(i) & chr(10)
ip = ip + " IPAddress : " & IPConfig.IPAddress(i) & chr(10)
ip = ip + " Subnet : " & IPConfig.IPSubnet(i) & chr(10)
ip = ip + " MAC Address : " & IPConfig.MACAddress(i) & chr(10)
Next
End If
Next
WScript.Echo IP
'--------------------------------------------------------------------------------------------

4 réponses

Avatar
Jacques Barathon [MS]
"Bernard59139" <bfermaut at free dot fr> wrote in message
news:
Bonjour

J'ai un problème de compréhension pour lister certaines valeurs obtenues
via WMI.

Le script suivant fonctionne très bien, mais je souhaiterai faire un
équivalent en récupérant tout ce qui est possible sans avoir à écrire
chaque couple name/value.
Ou remplacer ce qu'il y a dans dans la boucle *FOR I=..../NEXT* par
quelque chose de plus complet.


C'est l'occasion de passer à Windows PowerShell :-) :

PS> $IPConfigSet = get-wmiobject -query 'Select * from
Win32_NetworkAdapterConfiguration where IPEnabled="TRUE"'
PS> $IPConfigSet | format-list *

... S'ensuit la longue liste de toutes les propriétés pour chaque adaptateur
concerné.

Pour n'afficher que quelques propriétés sous forme d'une table:

PS> $IPConfigSet | format-table description, MACAddress

description MACAddress
----------- ----------
Broadcom 570x Gigabit Integrated Controller
00:0F:1F:A1:C6:39
Intel(R) PRO/Wireless LAN 2100 3A Mini PCI Adapter
00:0C:F1:24:C5:45

Jacques

Avatar
Bernard59139
"Jacques Barathon [MS]" a écrit dans le message de news:

......
C'est l'occasion de passer à Windows PowerShell :-) :



J'ai plus qu'à bosser pour apprendre ce nouveau truc Win-PS. Et installer ca sur les PC que je gère, si l'admin le veut
bien. Enfin pas si nouveau que celà.
Déjà, j'ai récupéré la liste de toutes les propriétés, ce n'est pas un luxe.

merci pour la réponse très rapide
Bernard

Avatar
Gilles LAURENT
"Bernard59139" <bfermaut at free dot fr> a écrit dans le message de
news:
| Bonjour

Bonsoir,

[...]
| Le script suivant fonctionne très bien, mais je souhaiterai faire un
| équivalent en récupérant tout ce qui est possible sans avoir à écrire
| chaque couple name/value.

La fonction VBScript 'PrintWMIProperties' ci-dessous affiche toutes les
propriétés et valeurs d'une classe WMI spécifiée comme argument. Cela
est possible grâce à "l'auto-documentation" des classes WMI qui exposent
leurs propriétés et méthodes au même titre que le framework .Net et
PowerShell.

--- Coupez ici ---

Sub PrintWMIProperties (strWMIClass)
Set oWmi = GetObject ("winmgmts:/root/cimv2")
Set colWmi = GetObject ("winmgmts:/root/cimv2:" & strWMIClass)
Set colObj = oWmi.ExecQuery ("Select * from " & strWMIClass)
For Each obj in colObj
For Each oProp In colWmi.Properties_
If Not IsArray (obj.Properties_.Item (oProp.Name)) Then
WScript.Echo oProp.Name & "=" & _
obj.Properties_.Item (oProp.Name)
Else
WScript.Echo oProp.Name & _
"=(" & Join (obj.Properties_.Item(oProp.Name),",") &
")"
End If
Next
WScript.Echo
Next
End Sub

PrintWMIProperties ("Win32_NetworkAdapterConfiguration")

--- Coupez ici ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Bernard59139
"Gilles LAURENT" a écrit dans le message de news:
"Bernard59139" <bfermaut at free dot fr> a écrit dans le message de
news:
| Bonjour

Bonsoir,

[...]
| Le script suivant fonctionne très bien, mais je souhaiterai faire un
| équivalent en récupérant tout ce qui est possible sans avoir à écrire
| chaque couple name/value.

La fonction VBScript 'PrintWMIProperties' ci-dessous affiche toutes les
propriétés et valeurs d'une classe WMI spécifiée comme argument. Cela
est possible grâce à "l'auto-documentation" des classes WMI qui exposent
leurs propriétés et méthodes au même titre que le framework .Net et
PowerShell.

--- Coupez ici ---

Sub PrintWMIProperties (strWMIClass)
Set oWmi = GetObject ("winmgmts:/root/cimv2")
Set colWmi = GetObject ("winmgmts:/root/cimv2:" & strWMIClass)
Set colObj = oWmi.ExecQuery ("Select * from " & strWMIClass)
For Each obj in colObj
For Each oProp In colWmi.Properties_
If Not IsArray (obj.Properties_.Item (oProp.Name)) Then
WScript.Echo oProp.Name & "=" & _
obj.Properties_.Item (oProp.Name)
Else
WScript.Echo oProp.Name & _
"=(" & Join (obj.Properties_.Item(oProp.Name),",") &
")"
End If
Next
WScript.Echo
Next
End Sub

PrintWMIProperties ("Win32_NetworkAdapterConfiguration")

--- Coupez ici ---

--
Gilles LAURENT
http://glsft.free.fr




Va falloir que je prenne des vitamines pour m'adapter à windows. je dois apprendre les langage de script et les briques
comme WMI, ADO, .... En assimillant les notions d'objets.
Je viens du monde "mainframe" où les choses étaient très différentes, les objets y était inconnus.

Merci à Gilles et à Jacques
Bernard