Как программно извлечь виртуальный дисковод виртуальной машины в Hyper-V с помощью WMI и C #? - PullRequest
1 голос
/ 19 июля 2011

Я пытаюсь извлечь / удалить загруженную * виртуальную дискету * (VFD) виртуальной машины в Hyper-V с использованием API-интерфейса WMI Hyper-V и VB.Net/ C #.

Я выполняю эту операцию, когда виртуальная машина выключена, но все равно получаю следующую ошибку:

"VM-17-7-2011_Sub146_0" не удалось удалить ресурсы. (Идентификатор виртуальной машины E543B32A-2058-4992-B50A-C7DBC6A8D948) " * Код ошибки: * 32773 JobStated: исключительная ситуация {10}

и эта информация об ошибке не очень полезна.

Также, если я могу создать и добавить виртуальный дисковод гибких дисков к виртуальной машине при создании виртуальной машины, почему я получаю сообщение об ошибке при попытке извлечь / выгрузить его? Я делаю это неправильно? Пожалуйста, помогите.

Также обратите внимание, что я добавляю VFD в виртуальную машину после создания виртуальной машины, и эта виртуальная машина еще не запущена! Это означает, что VFD может быть добавлен в виртуальную машину без ее запуска. Поэтому по логике я должен быть в состоянии удалить его, когда виртуальная машина находится в выключенном состоянии и еще не запущена.

Доля кода, удаляющего виртуальные ресурсы, выглядит следующим образом:

 Dim RASDs As String() = New String() {existingRASD.GetText(TextFormat.CimDtd20)}

                Dim VMManagementService As ManagementObject = Me.GetVirtualSystemManagementService()

                Dim _
                    inParams As ManagementBaseObject = _
                        VMManagementService.GetMethodParameters("RemoveVirtualSystemResources")
                inParams("ResourcesettingData") = RASDs
                inParams("TargetSystem") = VM.Path.Path

                Dim _
                    outParams As ManagementBaseObject = _
                        VMManagementService.InvokeMethod("RemoveVirtualSystemResources", inParams, Nothing)
                Dim FloppyDisk As JobResult = Me.CreateJobResultFromWmiMethodResults(outParams)
                result = FloppyDisk

Пожалуйста, подумайте о том, почему я получаю это и как я могу решить это. Спасибо.

Steve

...