Definición y registro de propiedades de conmutador personalizado
Las definiciones de propiedades personalizadas para una directiva de conmutador extensible de Hyper-V se registran con la capa de administración de WMI mediante definiciones de clase de formato de objeto administrado (MOF). Además de los miembros de la estructura que definen los atributos de la propiedad de conmutador personalizado, la clase MOF también debe contener lo siguiente:
UUID que identifica de forma única la propiedad del conmutador personalizado.
GUID que identifica de forma única la extensión de conmutador extensible. Este GUID se declara como calificador ExtensionId de la clase MOF y debe coincidir con el valor de la entrada NetCfgInstanceId declarada en el archivo INF de la extensión.
Cadena de nombre de clase descriptivo. El nombre del proveedor debe incluirse en la cadena.
A continuación se muestra un ejemplo de una clase MOF para una propiedad personalizada de una directiva de conmutador extensible.
#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;
};
Las clases MOF para propiedades personalizadas de una directiva de conmutador se registran en el repositorio del modelo de información común (CIM) mediante el compilador MOF (Mofcomp.exe). Una vez registrada, la clase MOF se puede configurar a través de cmdlets de PowerShell y programas de aplicaciones basados en WMI.
En el ejemplo siguiente se muestran los comandos que se deben escribir para registrar un archivo (Fabrikam_SwitchCustomSettingData.mof) que contiene la clase MOF para una propiedad de puerto personalizada.
net stop vmms
mofcomp -N:root\virtualization\v2 Fabrikam_SwitchCustomSettingData.mof
net start vmms
Para obtener más información sobre cómo usar el compilador MOF, vea Compilar un archivo MOF del controlador.
En el ejemplo siguiente se muestra cómo puede configurar la característica de ejemplo. En este ejemplo, la Fabrikam_SwitchCustomSettingData clase MOF se usa para configurar un modificador denominado "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
Para obtener más información sobre cómo las extensiones de conmutador extensible administran las directivas de conmutador, consulte Administración de directivas de conmutador.