문제

Hyper-V 관리자를 사용하여 원격 VM 호스트에 연결하여 VM 설정으로 이동하여 기존 .VHD 파일을 새 하드 디스크로 추가 할 수 있습니다. VM 호스트가 서버 2008 R2를 실행 중이고 디스크가 SCSI 컨트롤러에 연결된 경우 VM이 실행중인 동안이 작업을 수행 할 수도 있습니다 ( Hyper-V R2의 새로운 기능).

이 작업을 수동으로 수행하면 모든 것이 잘 작동합니다. 문제는 이제 자동화 된 테스트 중에 다른 VHD를 즉시 연결할 수 있도록 자동화하고 싶다는 것입니다.

이미 WMI를 통해 원격 VM 호스트에 연결하는 C# 코드가 있고 전화를 통해 VM을 시작/중지하는 C# 코드가 있습니다. requestStateChange, 그리고 "VHD로가는 길은이 VM에 SCSI 드라이브로 첨부"라고 말할 수 있도록 확장하고 싶습니다. 그러나 WMI 가상화 클래스 목록, 나는 이것을하는 방법을 알 수 없습니다.

내가 찾은 가장 가까운 것은입니다 의 방법 msvm_imagemanagementservice, 그러나 이것은 현재 OS 내부에 VHD를 장착하는 것으로 보입니다.

도움이 되었습니까?

해결책

추가해야합니다 합성 디스크 (자원 유형.디스크, 자원 부족.디스크 합성) msvm_virtualsystemmanagementservice.addvirtualsystemresources 사용 parent = 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);

그런 다음 첨부하십시오 가상 하드 디스크 (자원 유형.StorageExtent, 자원 부족.VHD) msvm_virtualsystemmanagementservice.addvirtualsystemresources 사용 부모 = 합성 디스크의 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 탐색기.

다른 팁

또한 살펴보십시오 http://hypervlib.codeplex.com 예를 들어.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top