Erstellen einer Union-Ansichtsklasse
Eine Union-Ansichtsklasse ist eine logische Vereinigung von Quellklasseninstanzen. Eine Union-Ansichtsklasse enthält alle Instanzen der Quellklassen, es sei denn, Sie schränken die Instanzen ein, indem Sie eine WHERE-Klausel in die Quellabfrage einschließen.
Union-Ansichtsklassen sind nützlich, wenn Sie Instanzen ähnlicher oder identischer Klassen anzeigen möchten, die sich in verschiedenen Namespaces oder auf verschiedenen Computern befinden. Sie können beispielsweise eine Union-Klasse erstellen, die Instanzen verschiedener zu überwachende Datenträgerlaufwerke enthält.
Die Eigenschaften einer Union-Ansichtsklasse können auch auf Eigenschaften basieren, die nicht in allen Quellklasseninstanzen vorhanden sind. Wenn die Quellklasseninstanzen nicht dieselbe Eigenschaft besitzen, haben die Eigenschaften von Union-Klasseninstanzen den Wert NULL. Wenn beispielsweise ein Festplattenlaufwerk über eine Eigenschaft für die Temperatur verfügt, eine andere aber nicht, können Sie trotzdem eine Vereinigung zwischen beiden erstellen.
Das folgende Verfahren beschreibt die Erstellung einer Union-Ansichtsklasse.
Erstellen einer Union-Ansichtsklasse
Beginnen Sie die Klassendefinition mit dem ZeichenfolgenqualifiziererUnion.
Die Qualifizierer JoinOn, Association und Union schließen sich gegenseitig aus.
Erstellen Sie die Abfragen, die die in der Ansichtsklasse verwendeten Quellklassen definieren, mit dem ViewSources-Qualifizierer.
Definieren Sie die Namen und Speicherorte der Namespaces, in denen sich die Quellklassen befinden, mit dem ViewSpaces-Qualifizierer.
Definieren Sie die Eigenschaften, die den Eigenschaften in den Quellklassen zugeordnet werden, mit dem PropertySources-Qualifizierer.
Bei Bedarf können Sie jede der Eigenschaften als zu einer Quellklasse gehörig markieren, indem Sie den HiddenDefault-Qualifizierer verwenden.
Definieren Sie die Schlüsseleigenschaften der Quellklassen Ihrer Union-Ansichtsklasse.
Jede Quellklasse muss dieselbe Anzahl von Schlüsseleigenschaften besitzen wie vom CIMType festgelegt. Außerdem müssen die Schlüssel Ihrer Union-Ansichtsklasse alle Quellinstanzen eindeutig identifizieren. In einigen Fällen müssen Sie möglicherweise Systemeigenschaften angeben, um sicherzustellen, dass Instanzen eindeutig sind. Wenn Sie beispielsweise eine Ansicht aus der Vereinigung zweier identischer Klassen in zwei verschiedenen Namespaces erstellen, können Sie die __Namespace-Eigenschaft als Schlüssel in die Ansichtsklasse einfügen, um die beiden Instanzen voneinander zu unterscheiden. Wenn Sie zwei gleiche Klassen aus demselben Namespace verwenden, um eine Ansicht zu erstellen, können Sie die __Class-Eigenschaft verwenden, um die beiden voneinander zu unterscheiden. Benennen Sie alle Systemeigenschaften in der Ansicht um, um einen Konflikt mit den Systemeigenschaften der Ansichtsklasse zu vermeiden.
Definieren Sie alle gewünschten Methoden mit dem MethodSource-Qualifizierer.
Im Gegensatz zu anderen Ansichtsklassen können Sie zum Ändern einer Union-Ansicht Methoden erstellen.
Das folgende Codebeispiel zeigt eine Union-Ansichtsklasse.
[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;
};