Definition und Registrierung von benutzerdefinierten Switch-Eigenschaften
Benutzerdefinierte Eigenschaftendefinitionen für eine Richtlinie für erweiterbare Hyper-V-Switches werden mithilfe von MOF-Klassendefinitionen (Managed Object Format) bei der WMI-Verwaltungsebene registriert. Zusätzlich zu den Strukturmembern, die die Attribute der benutzerdefinierten Switch-Eigenschaft definieren, muss die MOF-Klasse auch Folgendes enthalten:
Eine UUID, die die benutzerdefinierte Switcheigenschaft eindeutig identifiziert.
Eine GUID, die die erweiterbare Switcherweiterung eindeutig identifiziert. Diese GUID wird als ExtensionId-Qualifizierer der MOF-Klasse deklariert und muss mit dem Wert des NetCfgInstanceId-Eintrags übereinstimmen, der in der INF-Datei der Erweiterung deklariert ist.
Eine beschreibende Klassennamenzeichenfolge. Der Name des Anbieters muss in der Zeichenfolge enthalten sein.
Im Folgenden finden Sie ein Beispiel für eine MOF-Klasse für eine benutzerdefinierte Eigenschaft einer erweiterbaren Switchrichtlinie.
#pragma namespace("\\\\.\\root\\virtualization\\v2")
[ Dynamic,
UUID("FF36C3A6-D2F1-46ed-A376-32B43D6B8390"),
ExtensionId("5CBF81BE-5055-47CD-9055-A76B2B4E369E"),
Provider("VmmsWmiInstanceAndMethodProvider"),
Locale(0x409),
InterfaceVersion("1"),
InterfaceRevison("0"),
DisplayName("Fabrikam, Inc. Switch Settings Friendly Name") : Amended,
Description("Fabrikam, Inc. Switch Settings detailed description.") : Amended]
class Fabrikam_SwitchCustomSettingData : Msvm_EthernetSwitchFeatureSettingData {
[ Read,
Write,
WmiDataId(1),
InterfaceVersion("1"),
InterfaceRevision("0"),
Description (
"int32 setting.") : Amended]
uint32 SwitchSettingIntA = 0;
[ Read,
Write,
WmiDataId(2),
InterfaceVersion("1"),
InterfaceRevision("0"),
Description (
"int64 setting.") : Amended]
uint64 SwitchSettingIntB = 0;
};
Die MOF-Klassen für benutzerdefinierte Eigenschaften einer Switchrichtlinie werden mithilfe des MOF-Compilers (Mofcomp.exe) im CIM-Repository (Common Information Model) registriert. Nach der Registrierung kann die MOF-Klasse über PowerShell-Cmdlets und WMI-basierte Anwendungsprogramme konfiguriert werden.
Das folgende Beispiel zeigt die Befehle, die eingegeben werden müssen, um eine Datei (Fabrikam_SwitchCustomSettingData.mof) zu registrieren, die die MOF-Klasse für eine benutzerdefinierte Porteigenschaft enthält.
net stop vmms
mofcomp -N:root\virtualization\v2 Fabrikam_SwitchCustomSettingData.mof
net start vmms
Weitere Informationen zur Verwendung des MOF-Compilers finden Sie unter Kompilieren einer MOF-Datei des Treibers.
Das folgende Beispiel zeigt, wie Sie das Beispielfeature konfigurieren können. In diesem Beispiel wird die Fabrikam_SwitchCustomSettingData MOF-Klasse verwendet, um einen Switch mit dem Namen "TestSwitch" zu konfigurieren.
# Retrieve the template object for the custom configuration. We know the ID already so
# we can retrieve it directly, otherwise Get-VMSystemSwitchExtensionSwitchFeature can list all available
# properties.
PS C:\> $feature = Get-VMSystemSwitchExtensionSwitchFeature -FeatureId FF36C3A6-D2F1-46ed-A376-32B43D6B8390
# Output the values
PS C:\temp> $feature
Id : ff36c3a6-d2f1-46ed-a376-32b43d6b8390
ExtensionId : 5CBF81BE-5055-47CD-9055-A76B2B4E369E
ExtensionName : Fabrican Extension
Name : Fabrikam, Inc. Switch Settings Friendly Name
ComputerName : TEST_SERVER
SettingData : \\TEST_SERVER\root\virtualization\v2:VendorName_SwitchCustomSettingData.InstanceID="Microsoft:Definition\\
FF36C3A6-D2F1-46ED-A376-32B43D6B8390\\Default"
# Cast the SettingsData to a WMI object to see the actual configurable values.
PS C:\> $wmiObj = [wmi]$feature.SettingData
PS C:\> $wmiObj
__GENUS : 2
__CLASS : Fabrikam_SwitchCustomSettingData
__SUPERCLASS : Msvm_EthernetSwitchFeatureSettingData
__DYNASTY : CIM_ManagedElement
__RELPATH : Fabrikam_SwitchCustomSettingData .InstanceID="Microsoft:Definition\\FF36C3A6-D2F1-46ED-A376-32B43D
6B8390\\Default"
__PROPERTY_COUNT : 6
__DERIVATION : {Msvm_EthernetSwitchFeatureSettingData, Msvm_FeatureSettingData, CIM_SettingData,
CIM_ManagedElement}
__SERVER : TEST_SERVER
__NAMESPACE : root\virtualization\v2
__PATH : \\TEST_SERVER\root\virtualization\v2:Fabrikam_SwitchCustomSettingData .InstanceID="Microsoft:Definiti
on\\FF36C3A6-D2F1-46ED-A376-32B43D6B8390\\Default"
Caption : Fabrikam, Inc. Switch Settings Friendly Name
Description : Fabrikam, Inc. Switch Settings detailed description.
ElementName : Fabrikam, Inc. Switch Settings Friendly Name
InstanceID : Microsoft:Definition\FF36C3A6-D2F1-46ED-A376-32B43D6B8390\Default
SwitchSettingIntA : 0
SwitchSettingIntB : 0
PSComputerName : TEST_SERVER
# Update the property settings and add to the NIC attached to TestVm
PS C:\> $wmiObj.SwitchSettingIntA = 100
PS C:\> $wmiObj.SwitchSettingIntB = 9999
PS C:\> Add-VMSwitchExtensionSwitchFeature -VMSwitchExtensionFeature $feature -SwitchName TestSwitch
# Validate that the properties are now set on the VM’s NIC
PS C:\> $feature = Get-VmSwitchExtensionSwitchFeature -FeatureId FF36C3A6-D2F1-46ed-A376-32B43D6B8390 -SwitchName TestSwitch
PS C:\> [wmi]$feature.SettingData
__GENUS : 2
__CLASS : Fabrikam_SwitchCustomSettingData
__SUPERCLASS : Msvm_EthernetSwitchFeatureSettingData
__DYNASTY : CIM_ManagedElement
__RELPATH : Fabrikam_SwitchCustomSettingData .InstanceID="Microsoft:88835394-FDE1-437C-B249-D840575154E2\\FF36
C3A6-D2F1-46ED-A376-32B43D6B8390\\F9EA07E7-7B73-431A-8705-26EC2B592306"
__PROPERTY_COUNT : 6
__DERIVATION : {Msvm_EthernetSwitchFeatureSettingData, Msvm_FeatureSettingData, CIM_SettingData,
CIM_ManagedElement}
__SERVER : TEST_SERVER
__NAMESPACE : root\virtualization\v2
__PATH : \\TEST_SERVER\root\virtualization\v2:Fabrikam_SwitchCustomSettingData .InstanceID="Microsoft:88835394
-FDE1-437C-B249-D840575154E2\\FF36C3A6-D2F1-46ED-A376-32B43D6B8390\\F9EA07E7-7B73-431A-8705-26EC2B5
92306"
Caption : Fabrikam, Inc. Switch Settings Friendly Name
Description : Fabrikam, Inc. Switch Settings detailed description.
ElementName : Fabrikam, Inc. Switch Settings Friendly Name
InstanceID : Microsoft:88835394-FDE1-437C-B249-D840575154E2\FF36C3A6-D2F1-46ED-A376-32B43D6B8390\F9EA07E7-7B73-4
31A-8705-26EC2B592306
SwitchSettingIntA : 100
SwitchSettingIntB : 9999
PSComputerName : TEST_SERVER
Weitere Informationen dazu, wie erweiterbare Switcherweiterungen Switchrichtlinien verwalten, finden Sie unter Verwalten von Switchrichtlinien.