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

bibliotheque des types de proprietes de classes win32

6 réponses
Avatar
merlin01fr
Bonjour

Encore un petit truc que je trouve assez sympa

ce script sert a generer une bibliotheque des types de proprietes de classes
win32 de cimv2 directement en csv

Code:


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Creation d'un fichier csv répertoriant en les classant dans la bonne '
' Colonne tous les types des proprietes des classes win32 de cimv2 '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Origine : issu de scriptcenter.chm ce script permettait de lister '
' L'ensemble des proprietes des classes win32 ainsi que leurs '
' Methodes, le script d'origine est trouvable sous le nom de '
' (Listing the Properties and Methods of the Win32 Classes) '
' Merci aussi a pilosite et son site www.scriptovore.com '
' Un grand expert du script se trouve derriere ce site et est pret '
' a repondre a toutes vos questions '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright du plagieur : Gauthier Lapoujade ' Niveau : Debutant '
' alias : merlin01fr ou nathan01fr ' '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Date de creation : 18/01/2006 ' Derniere Maj : 18/01/2006 '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Modification apportée : la version d'origine ne proposait qu'un '
' fichier texte de ligne mise les unes a la suite des autres (pas tres '
' pratique quand on recherche des infos sur un type de classe) , on '
' arrive a une bien meilleure visibilité quand on classifie les '
' informations trouvées. si vous ouvrez ce fichier sous excel en mode '
' texte vous optiendrez les informations suivantes (en colonnes ) : '
' Nom de la classe; Nom de la Propriete, type 1; type 2; type 3; '
' il ne vous restera plus qu'a creer un filtre automatique sur les '
' colonnes pour obtenir les informations qui vous interessent '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Mon appreciation du script : assez pratique pour avoir une visue sur '
' les proprietes des classes , mais il reste a faire de meme les '
' methodes '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Cette partie permet de creer les repertoires qui seront utiles a '
' l'extraction des classes wmi , changez le nom de ces repertoires '
' si vous le souhaitez le script se readaptera en fonction de vos '
' preferences '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

RepDeBase = "c:\Scripts"
SousRepDeBase = "c:\scripts\extraction"

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FolderExists(RepDeBase) Then
fso.CreateFolder(RepDeBase)
End If

If Not fso.FolderExists(SousRepDeBase) Then
fso.CreateFolder(SousRepDeBase)
End If

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' je commence la creation du fichier csv ici en preparant les entetes '
' de colonnes '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Set fso = CreateObject("Scripting.FileSystemObject")
Set MaPropriete = fso.CreateTextFile(SousRepDeBase & chr(92) & "Proprietes
de classe.csv", True)

MaPropriete.WriteLine("Nom de la Classe" & ";" & "Nom de la Propriete" &
";" & "16 Bit Signé" & ";" _
& "32 Bit Signé" & ";" & "32 Bit Reel" & ";" & "64 Bit
Reel" & ";" & "Chaine de Caractere" & ";" _
& "Valeur Booleenne" & ";" & "Object Cim" & ";" & "8 Bit
Signé" & ";" & "8 Bit non Signé" & ";" _
& "16 Bit non Signé" & ";" & "32 Bit non Signé" & ";" &
"64 Bit Signé" & ";" _
& "64 Bit non Signé" & ";" & "Format Date" & ";" &
"Réference a un Object Cim" & ";" _
& "Caractere 16 Bit")


strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

For Each objclass in objWMIService.SubclassesOf()

intCounter=0

If Left(objClass.Path_.Class,5) = "Win32" Then

For Each Qualifier in objClass.Qualifiers_

If UCase(Trim(Qualifier.Name)) = "ASSOCIATION" Then

intCounter = 1

End If

Next

If x = 0 Then

strComputer = "."



Set objWMIService = GetObject
("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set strClass = objWMIService.Get(objClass.Path_.Class)

For each strItem in strClass.properties_

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ici je teste toutes les proprietes via .CIMType pour verifier a quelle '
' categorie elles appartiennent , suivant le resulat obtenu je place un '
' OUI dans la colonne correspondante (simple comme bonjour) '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


With strItem

If .CIMType = 2 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & "Oui")
End If

If .CIMType = 3 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & "Oui")
End If

If .CIMType = 4 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & "Oui")
End If

If .CIMType = 5 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & "Oui")
End If

If .CIMType = 8 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & "Oui")
End If

If .CIMType = 11 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & "Oui")
End If

If .CIMType = 13 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & "Oui")
End If

If .CIMType = 16 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & "Oui")
End If

If .CIMType = 17 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & "Oui")
End If

If .CIMType = 18 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
"Oui")
End If

If .CIMType = 19 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & "Oui")
End If

If .CIMType = 20 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & ";" & "Oui")
End If

If .CIMType = 21 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & ";" & ";" & _
"Oui")
End If

If .CIMType = 101 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & ";" & ";" & _
";" & "Oui")
End If

If .CIMType = 102 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & ";" & ";" & _
";" & ";" &
"Oui")
End If

If .CIMType = 103 Then
MaPropriete.WriteLine(objClass.Path_.Class & ";" &
strItem.Name & ";" & ";" & ";" & _
";" & ";" & ";" & ";" & ";" & ";" & ";" &
";" & ";" & ";" & _
";" & ";" & ";"
& "Oui")
End If

End With

Next
End If
End If
Next
MaPropriete.Close




Pareil si vous avez des remarque je suis preneur

Cordialement

6 réponses

Avatar
merlin01fr
Bonjour

Ce serait sympa de votre part (juste parceque ce sont mes deux premiers
programmes en vbs) que vous me disiez ce que vous en pensez ?

Cordialement
Avatar
Méta-MCI
Salut !

Je peux déjà te dire qu'il faudra que je lise le message... dès que j'aurais
assez de temps

@+

Michel Claveau
Avatar
merlin01fr
merci en tous les cas :)


Salut !

Je peux déjà te dire qu'il faudra que je lise le message... dès que j'aurais
assez de temps

@+

Michel Claveau






Avatar
Jean
je suis preneur


Le machin ci dessous permet aussi de savoir si une propriété est un
tableau et si elle est accessible en lecture/écriture ou pas (en
utiliant un objet SWbemQualifier :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/swbemqualifier.asp):

http://automation.eu.tf/Proprietes_Classe_WMI.VBS

'---8<---Proprietes_Classe_WMI.VBS---Jean-JMST-Belgium---

'###DEMO###
WScript.Echo Proprietes_Classe("Win32_BIOS")
Ecrire Proprietes_Classe("Win32_BIOS")

Sub Ecrire(quoi)
With CreateObject("Scripting.FileSystemObject")
fichier=.BuildPath(.GetSpecialFolder(2),.GetTempName())
wscript.echo fichier
.CreateTextFile(fichier).Write(quoi)
CreateObject("WScript.Shell").Run "notepad.exe
"""&fichier&"""",1,True
.DeleteFile(fichier)
End With
End Sub
'###DEMO###

Function Proprietes_Classe(classe)
sep=" | "
r=classe&VbNewLine&VbNewLine
For Each objet In GetObject("winmgmts:"&classe).Properties_
r=r&objet.Name&sep&_
CIM_Type(objet.CIMType)
If objet.IsArray Then r=r&"[tableau]"
r=r&sep&Ecriture(objet)&VbNewLine
Next
Proprietes_Classe=r
End Function

Function Ecriture(quoi)
Ecriture="Lecture seule"
For Each q in quoi.Qualifiers_
If LCase(q.Name)="write" Then Ecriture="Lecture/Ecriture"
Next
End Function

Function CIM_Type(quoi)
Select Case quoi
Case 2:CIM_Type="Entier signé 16 bit"
Case 3:CIM_Type="Entier signé 32 bit"
Case 4:CIM_Type="Nombre réel 32 bit"
Case 5:CIM_Type="Nombre réel 64 bit"
Case 8:CIM_Type="Chaîne"
Case 11:CIM_Type="Booléen"
Case 13:CIM_Type="Objet"
Case 16:CIM_Type="Entier signé 8 bit"
Case 17:CIM_Type="Entier non signé 8 bit"
Case 18:CIM_Type="Entier non signé 16 bit"
Case 19:CIM_Type="Entier non signé 32 bit"
Case 20:CIM_Type="Entier signé 64 bit"
Case 21:CIM_Type="Entier non signé 64 bit"
Case 101:CIM_Type="Valeur Date/Temps"
Case 102:CIM_Type="Référence à un objet"
Case 103:CIM_Type="Caractère 16 bit"
Case Else:CIM_Type="NON DÉFINI"
End Select
End Function

'---8<---Proprietes_Classe_WMI.VBS------Jean-JMST-Belgium---

Amicalement,

--
Jean - JMST
Belgium

Avatar
merlin01fr
bonjour et merci je vais regarder ca de ce pas

je sais j'abuse mais si tu pouvais jeter un oeil sur mon generateur de
script vbs
(le post juste en dessous) et me dire ce que tu en penses

Cordialement


je suis preneur


Le machin ci dessous permet aussi de savoir si une propriété est un
tableau et si elle est accessible en lecture/écriture ou pas (en
utiliant un objet SWbemQualifier :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/swbemqualifier.asp):

http://automation.eu.tf/Proprietes_Classe_WMI.VBS

'---8<---Proprietes_Classe_WMI.VBS---Jean-JMST-Belgium---

'###DEMO###
WScript.Echo Proprietes_Classe("Win32_BIOS")
Ecrire Proprietes_Classe("Win32_BIOS")

Sub Ecrire(quoi)
With CreateObject("Scripting.FileSystemObject")
fichier=.BuildPath(.GetSpecialFolder(2),.GetTempName())
wscript.echo fichier
.CreateTextFile(fichier).Write(quoi)
CreateObject("WScript.Shell").Run "notepad.exe
"""&fichier&"""",1,True
.DeleteFile(fichier)
End With
End Sub
'###DEMO###

Function Proprietes_Classe(classe)
sep=" | "
r=classe&VbNewLine&VbNewLine
For Each objet In GetObject("winmgmts:"&classe).Properties_
r=r&objet.Name&sep&_
CIM_Type(objet.CIMType)
If objet.IsArray Then r=r&"[tableau]"
r=r&sep&Ecriture(objet)&VbNewLine
Next
Proprietes_Classe=r
End Function

Function Ecriture(quoi)
Ecriture="Lecture seule"
For Each q in quoi.Qualifiers_
If LCase(q.Name)="write" Then Ecriture="Lecture/Ecriture"
Next
End Function

Function CIM_Type(quoi)
Select Case quoi
Case 2:CIM_Type="Entier signé 16 bit"
Case 3:CIM_Type="Entier signé 32 bit"
Case 4:CIM_Type="Nombre réel 32 bit"
Case 5:CIM_Type="Nombre réel 64 bit"
Case 8:CIM_Type="Chaîne"
Case 11:CIM_Type="Booléen"
Case 13:CIM_Type="Objet"
Case 16:CIM_Type="Entier signé 8 bit"
Case 17:CIM_Type="Entier non signé 8 bit"
Case 18:CIM_Type="Entier non signé 16 bit"
Case 19:CIM_Type="Entier non signé 32 bit"
Case 20:CIM_Type="Entier signé 64 bit"
Case 21:CIM_Type="Entier non signé 64 bit"
Case 101:CIM_Type="Valeur Date/Temps"
Case 102:CIM_Type="Référence à un objet"
Case 103:CIM_Type="Caractère 16 bit"
Case Else:CIM_Type="NON DÉFINI"
End Select
End Function

'---8<---Proprietes_Classe_WMI.VBS------Jean-JMST-Belgium---

Amicalement,

--
Jean - JMST
Belgium






Avatar
merlin01fr
encore une fois merci jean

le test des proprietes par la methode IsArray fait des miracles