自訂埠屬性定義和註冊
Hyper-V 可延伸交換器埠原則的自訂屬性定義會使用 Managed 物件格式向 WMI 管理層註冊, (MOF) 類別定義。 除了定義自訂埠屬性屬性的結構成員之外,MOF 類別也必須包含下列專案:
唯一識別自訂埠屬性的 UUID。
可唯一識別可延伸交換器延伸模組的 GUID。 此 GUID 會宣告為 MOF 類別的 ExtensionId 限定詞,而且必須符合延伸模組 INF 檔案中宣告的 NetCfgInstanceId 專案值。
描述性類別名稱字串。 廠商的名稱必須包含在字串中。
以下顯示可延伸交換器埠原則之自訂屬性的 MOF 類別範例。
#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;
};
埠原則之自訂屬性的 MOF 類別會使用 MOF 編譯器 (Mofcomp.exe) ,在 CIM) 存放庫中註冊 (通用訊息模型。 註冊之後,可以透過 PowerShell Cmdlet 和 WMI 型應用程式來設定 MOF 類別。
下列範例顯示必須輸入的命令,才能註冊包含自訂埠屬性之 MOF 類別的檔案 (Fabrikam_PortCustomSettingData.mof) 。
net stop vmms
mofcomp -N:root\virtualization\v2 Fabrikam_PortCustomSettingData.mof
net start vmms
如需如何使用 MOF 編譯器的詳細資訊,請參閱 編譯驅動程式的 MOF 檔案。
下列範例示範如何設定範例功能。 在此範例中,會使用 Fabrikam_PortCustomSettingData MOF 類別,從名為 「TestVm」 的 Hyper-V 磁碟分割設定埠。
# 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
如需可延伸交換器延伸模組如何管理埠原則的詳細資訊,請參閱 管理埠原則。