4

Hyper-V マネージャーを使用して、リモート VM ホストに接続し、VM の設定に移動して、既存の .VHD ファイルを新しいハード ディスクとして追加できます。VM ホストが Server 2008 R2 を実行していて、ディスクが SCSI コントローラーに接続されている場合、VM の実行中にこれを行うこともできます (「Hyper-V R2 の新機能」を参照)。

これを手動で行うと、すべてがうまく機能します。問題は、いくつかの自動テスト中にオンザフライでさまざまな VHD を接続できるように、自動化したいということです。

WMI 経由でリモート VM ホストに接続し、RequestStateChangeを呼び出して VM を開始/停止する C# コードが既にあります。これを拡張して、「VHD へのパスは次のとおりです。SCSI ドライブとして接続します。この VM に」。しかし、WMI 仮想化クラスのリストを見ても、これを行う方法がわかりません。

私が見つけた最も近いのはMsvm_ImageManagementServiceのMountメソッドですが、これは現在の OS 内に VHD をマウントしているように見えますが、これは私が望むものではありません。

4

2 に答える 2

4

Msvm_VirtualSystemManagementService.AddVirtualSystemResources を使用して合成ディスク(ResourceType. Disk、ResourceSubType. DiskSynthetic ) を追加する必要があります。親 = SCSI コントローラの WMI パス。

ManagementObject synthetic = Utilities.GetResourceAllocationSettingData(scope,
    ResourceType.Disk, ResourceSubType.DiskSynthetic);
synthetic["Parent"] = <ideControllerPath>; //or SCSI controller path (WMI path)
synthetic["Address"] = <diskDriveAddress>; //0 or 1 for IDE
string[] RASDs = new string[1];
RASDs[0] = synthetic.GetText(TextFormat.CimDtd20);

次に、 Msvm_VirtualSystemManagementService.AddVirtualSystemResources を使用して、仮想ハード ディスク(ResourceType. StorageExtent、ResourceSubType. VHD ) を接続します。親 = 合成ディスクの WMI パス、接続= *.vhd ファイル パス。

ManagementObject hardDisk = Utilities.GetResourceAllocationSettingData(scope,  
    ResourceType.StorageExtent, ResourceSubType.VHD);
hardDisk["Parent"] = <syntheticPath>; //WMI path
string[] connection = { <vhdPath> }; //Path to *.vhd file
hardDisk["Connection"] = connection;
string[] RASDs = new string[1];
RASDs[0] = hardDisk.GetText(TextFormat.CimDtd20);

仮想化サンプルとWMI エクスプローラーの共通ユーティリティを使用します。

于 2010-04-16T16:12:54.250 に答える
2

例については、http ://hypervlib.codeplex.comもご覧ください。

于 2010-07-01T04:49:48.590 に答える