Création d’une classe d’affichage unifié
Une classe d’affichage unifié est une union logique d’instances de classes sources. Une classe affichage unifié inclut toutes les instances des classes sources, sauf si vous limitez les instances en incluant une clause WHERE sur la requête source.
Les classes d’affichage unifié sont utiles lorsque vous souhaitez voir des instances de classes similaires ou identiques qui se trouvent dans des espaces de noms différents ou sur des ordinateurs différents. Par exemple, vous pouvez créer une classe contenant des instances de différents lecteurs de disque à surveiller.
Vous pouvez également baser les propriétés d’une classe d’affichage unifié sur des propriétés qui ne sont pas présentes dans toutes les instances de classe source. Si les instances de classe source n’ont pas la même propriété, les propriétés des instances de classe unifiées ont la valeur NULL. Par exemple, si un disque dur a une propriété temperature , mais qu’un autre n’en possède pas, vous pouvez toujours unir les deux.
La procédure suivante décrit comment créer une règle personnalisée.
Pour créer une classe Union View
Commencez la définition de votre classe par le qualificateur de chaîne Union.
Les qualificateurs JoinOn, Association, et Union s’excluent mutuellement.
Créez les requêtes qui définissent les instances sources utilisées dans la classe d’affichage avec le qualificateur ViewSources.
Définissez les noms et l’emplacement des espaces de noms dans lesquels se trouvent les instances sources avec le qualificateur ViewSpaces.
Définissez les propriétés qui correspondent aux propriétés dans les classes sources avec le qualificateur PropertySources .
Si nécessaire, vous pouvez marquer l’une des propriétés comme appartenant à une classe source à l’aide du qualificateur HiddenDefault .
Définissez les propriétés clés des classes sources de votre classe d’affichage unifié.
Chaque classe source doit avoir le même nombre de propriétés-clés correspondant à CIMType. De plus, les clés de votre classe de vue unifiée doivent identifier de manière unique toutes les instances sources. Dans certains cas, vous devrez peut-être spécifier des propriétés système pour vous assurer que les instances soient uniques. Par exemple, si vous créez une vue à partir de l’union de deux classes identiques dans deux espaces de noms différents, vous pouvez inclure la propriété __Namespace en tant que clé dans la classe d’affichage pour différencier les deux instances. Si vous utilisez deux classes similaires du même espace de noms pour créer un seul affichage, vous pouvez utiliser la propriété __Class pour faire la distinction entre les deux. Renommez toutes les propriétés système de l’affichage afin d’éviter un conflit avec les propriétés système de la classe d’affichage.
Définissez les méthodes souhaitées à l’aide du qualificateur MethodSource .
Contrairement à d’autres classes d’affichage, vous pouvez créer des méthodes pour modifier un affichage unifié.
L’exemple de code suivant décrit une classe d’affichage unifié.
[Union, ViewSources{"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM LocalDisk",
"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM RemoteDisk"},
ViewSpaces{"\\\\.\\Root\\LocalNamespace","\\\\.\\Root\\RemoteNamespace"},
dynamic: ToInstance, provider("MS_VIEW_INSTANCE_PROVIDER")]
class UnionOfDrives
{
[PropertySources{"Description", "Description"}] string des;
[PropertySources{"DeviceID", "DeviceID"}, key] String did;
[PropertySources{"__Namespace", "__Namespace"}, key] String KEYID;
[PropertySources{"FileSystem", "FileSystem"}] String fsystem ;
[PropertySources{"FreeSpace", "FreeSpace"}] uint64 fspace;
[PropertySources{"VolumeName", "VolumeName"}] String vname;
};