Definição e registro de propriedade de porta personalizada
As definições de propriedade personalizadas para uma política de porta de comutador extensível do Hyper-V são registradas com a camada de gerenciamento WMI usando definições de classe MOF (formato de objeto gerenciado). Além dos membros da estrutura que definem os atributos da propriedade de porta personalizada, a classe MOF também deve conter o seguinte:
Um UUID que identifica exclusivamente a propriedade de porta personalizada.
Um GUID que identifica exclusivamente a extensão de comutador extensível. Esse GUID é declarado como o qualificador ExtensionId da classe MOF e deve corresponder ao valor da entrada NetCfgInstanceId declarada no arquivo INF da extensão.
Uma cadeia de caracteres de nome de classe descritiva. O nome do fornecedor deve ser incluído na cadeia de caracteres.
O exemplo a seguir mostra um exemplo de uma classe MOF para uma propriedade personalizada de uma política de porta de comutador extensível.
#pragma namespace("\\\\.\\root\\virtualization\\v2")
[ Dynamic,
UUID("EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB"),
ExtensionId("5CBF81BE-5055-47CD-9055-A76B2B4E369E"),
Provider("VmmsWmiInstanceAndMethodProvider"),
Locale(0x409),
InterfaceVersion("1"),
InterfaceRevison("0"),
DisplayName("Fabrikam, Inc. Port Settings Friendly Name") : Amended,
Description("Fabrikam, Inc. Port Settings detailed description.") : Amended]
class Fabrikam_PortCustomSettingData : Msvm_EthernetSwitchPortFeatureSettingData {
[ Read,
Write,
WmiDataId(1),
InterfaceVersion("1"),
InterfaceRevision("0"),
Description (
"int32 setting.") : Amended]
uint32 SettingIntA = 0;
[ Read,
Write,
WmiDataId(2),
InterfaceVersion("1"),
InterfaceRevision("0"),
Description (
"int64 setting.") : Amended]
uint64 SettingIntB = 0;
};
As classes MOF para propriedades personalizadas de uma política de porta são registradas no repositório cim (common information model) usando o compilador MOF (Mofcomp.exe). Depois de registrada, a classe MOF pode ser configurada por meio de cmdlets do PowerShell e programas de aplicativo baseados em WMI.
O exemplo a seguir mostra os comandos que devem ser inseridos para registrar um arquivo (Fabrikam_PortCustomSettingData.mof) que contém a classe MOF para uma propriedade de porta personalizada.
net stop vmms
mofcomp -N:root\virtualization\v2 Fabrikam_PortCustomSettingData.mof
net start vmms
Para obter mais informações sobre como usar o compilador MOF, consulte Compilando um arquivo MOF de driver.
O exemplo a seguir mostra como você pode configurar o recurso de exemplo. Neste exemplo, a classe MOF Fabrikam_PortCustomSettingData é usada para configurar uma porta de uma partição do Hyper-V chamada "TestVm".
# Retrieve the template object for the custom configuration. We know the ID already so
# we can retrieve it directly, otherwise Get-VmSystemSwitchExtensionPortFeature can list all available
# properties.
PS C:\> $feature = Get-VMSystemSwitchExtensionPortFeature -FeatureId EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB
# Output the values
PS C:\> $feature
Id : eb29f0f2-f5dc-45c6-81bb-3cd9f219bbbb
ExtensionId : 5cbf81bd-5055-47cd-9055-a76b2b4e369d
ExtensionName : Fabrican Extension
Name : Fabrikam, Inc. Port Settings Friendly Name
ComputerName : TEST_SERVER
SettingData : \\TEST_SERVER\root\virtualization\v2:VendorName_SwitchPortCustomSettingData.InstanceID="Microsoft:Defini
tion\\EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB\\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_PortCustomSettingData
__SUPERCLASS : Msvm_EthernetSwitchFeatureSettingData
__DYNASTY : CIM_ManagedElement
__RELPATH : Fabrikam_PortCustomSettingData.InstanceID="Microsoft:Definition\\EB29F0F2-F5DC-45C6-81BB-3CD
9F219BBBB\\Default"
__PROPERTY_COUNT : 6
__DERIVATION : {Msvm_EthernetSwitchFeatureSettingData, CIM_SettingData, CIM_ManagedElement}
__SERVER : TEST_SERVER
__NAMESPACE : root\virtualization\v2
__PATH : \\TEST_SERVER\root\virtualization\v2:Fabrikam_PortCustomSettingData.InstanceID="Microsoft:Def
inition\\EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB\\Default"
Caption : Fabrikam, Inc. Port Settings Friendly Name
Description : Fabrikam, Inc. Port Settings detailed description.
ElementName : Fabrikam, Inc. Port Settings Friendly Name
InstanceID : Microsoft:Definition\EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB\Default
SettingIntA : 0
SettingIntB : 0
# Update the property settings and add to the NIC attached to TestVm
PS C:\> $wmiObj.SettingIntA = 100
PS C:\> $wmiObj.SettingIntB = 9999
PS C:\> Add-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $feature -VmName TestVm
# Validate that the properties are now set on the VM’s NIC
PS C:\> $feature = Get-VmSwitchExtensionPortFeature -FeatureId EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB -VmName TestVm
PS C:\> [wmi]$feature.SettingData
__GENUS : 2
__CLASS : Fabrikam_PortCustomSettingData
__SUPERCLASS : Msvm_EthernetSwitchFeatureSettingData
__DYNASTY : CIM_ManagedElement
__RELPATH : Fabrikam_PortCustomSettingData.InstanceID="Microsoft:6208FB20-2490-4DC1-B121-877B68B4CE11\\4
DDC57F5-6DAE-4A36-9D62-7A838D5601F2\\C\\EB29F0F2-F5DC-45C6-81BB-3CD9F219BBBB\\CB323B56-FA54-4506-B58
B-78C70C0B3229"
__PROPERTY_COUNT : 6
__DERIVATION : {Msvm_EthernetSwitchFeatureSettingData, CIM_SettingData, CIM_ManagedElement}
__SERVER : TEST_SERVER
__NAMESPACE : root\virtualization\v2
__PATH : \\TEST_SERVER\root\virtualization\v2:Fabrikam_PortCustomSettingData.InstanceID="Microsoft:620
8FB20-2490-4DC1-B121-877B68B4CE11\\4DDC57F5-6DAE-4A36-9D62-7A838D5601F2\\C\\EB29F0F2-F5DC-45C6-81BB-
3CD9F219BBBB\\CB323B56-FA54-4506-B58B-78C70C0B3229"
Caption : Fabrikam, Inc. Port Settings Friendly Name
Description : Fabrikam, Inc. Port Settings detailed description.
ElementName : Fabrikam, Inc. Port Settings Friendly Name
InstanceID : Microsoft:6208FB20-2490-4DC1-B121-877B68B4CE11\4DDC57F5-6DAE-4A36-9D62-7A838D5601F2\C\EB29F0F2-F5DC-
45C6-81BB-3CD9F219BBBB\CB323B56-FA54-4506-B58B-78C70C0B3229
SettingIntA : 100
SettingIntB : 9999
Para obter mais informações sobre como as extensões de comutador extensíveis gerenciam políticas de porta, consulte Gerenciando políticas de porta.