bibliotheque des types de proprietes de classes win32
6 réponses
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 '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
Je peux déjà te dire qu'il faudra que je lise le message... dès que j'aurais assez de temps
@+
Michel Claveau
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):
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
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):
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
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):
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
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):
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
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):
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
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):
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