カスタム ポート プロパティの定義と登録
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) リポジトリに登録されます。 登録後、MOF クラスは PowerShell コマンドレットと WMI ベースのアプリケーション プログラムを使用して構成できます。
次の例は、カスタム ポート プロパティの 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
拡張可能スイッチ拡張機能でポート ポリシーを管理する方法の詳細については、「ポート ポリシーの管理」を参照してください。