カスタム ポート プロパティの定義と登録
Hyper-V 拡張可能スイッチ ポート ポリシーのカスタム プロパティ定義は、マネージド オブジェクト形式 (MOF) クラス定義を使用して WMI 管理レイヤーに登録されます。 カスタム ポート プロパティの属性を定義する構造体メンバーに加えて、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 コマンドレットと 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
拡張可能スイッチ拡張機能でポート ポリシーを管理する方法の詳細については、「ポート ポリシーの管理を参照してください。