Definizione e registrazione delle proprietà del commutatore personalizzato
Le definizioni di proprietà personalizzate per un criterio di commutatore estendibile Hyper-V vengono registrate con il livello di gestione WMI usando le definizioni di classe MOF (Managed Object Format). Oltre ai membri della struttura che definiscono gli attributi della proprietà switch personalizzata, la classe MOF deve contenere anche quanto segue:
UUID che identifica in modo univoco la proprietà dell'opzione personalizzata.
GUID che identifica in modo univoco l'estensione del commutatore estendibile. Questo GUID viene dichiarato come qualificatore ExtensionId della classe MOF e deve corrispondere al valore della voce NetCfgInstanceId dichiarata nel file INF dell'estensione.
Stringa di nome della classe descrittiva. Il nome del fornitore deve essere incluso nella stringa.
Di seguito viene illustrato un esempio di classe MOF per una proprietà personalizzata di un criterio switch estendibile.
#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;
};
Le classi MOF per le proprietà personalizzate di un criterio switch vengono registrate nel repository COMMON Information Model (CIM) usando il compilatore MOF (Mofcomp.exe). Dopo la registrazione, la classe MOF può essere configurata tramite i cmdlet di PowerShell e i programmi dell'applicazione basati su WMI.
Nell'esempio seguente vengono illustrati i comandi che devono essere immessi per registrare un file (Fabrikam_SwitchCustomSettingData.mof) contenente la classe MOF per una proprietà di porta personalizzata.
net stop vmms
mofcomp -N:root\virtualization\v2 Fabrikam_SwitchCustomSettingData.mof
net start vmms
Per altre informazioni su come usare il compilatore MOF, vedere Compilazione di un file MOF di un driver.
Nell'esempio seguente viene illustrato come configurare la funzionalità di esempio. In questo esempio viene usata la classe FABRIKAM_SWITCHCUSTOMSETTINGDATA MOF per configurare un'opzione denominata "TestSwitch".
# 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
Per altre informazioni su come le estensioni del commutatore estendibile gestiscono i criteri dei commutatori, vedere Gestione dei criteri switch.