使用VMWare.vim.dll克隆VM后如何等待任务?

时间:2017-02-07 08:59:26

标签: c# vmware powercli

我正在开发一个Web界面,用于管理vsphere Esx 5.5上的虚拟机。我的程序是用.net web表单(不是MVC)开发的。

我关注jeffpaton帖子(使用VMware.Vim)帮助了我(感谢你,杰夫)https://communities.vmware.com/thread/434579

但现在我冻结了这个话题。克隆虚拟机后,我不知道如何等待任务。我的网站使用vmware.vim向Vsphere Esx发出vsphere命令。我需要知道vpshere什么时候完成他的工作才能发起另一条指令。

我尝试使用PropertyCollector,但我不知道如何使用它:

我发了这篇文章,但没有成功:

这是我的代码的一部分尝试但我被阻止了。我使用jeffpaton函数。

PrincipalContext

我需要一些帮助。如果有人有建议开始...

谢谢大家。

1 个答案:

答案 0 :(得分:0)

这可能为时已晚,但现在可以了。

VimClient有一个WaitForTask方法;

client.WaitForTask(cloneTask_MoRef);

或者,您可以获得任务并查看其进度;

var task = (Task) client.GetView(cloneTask_MoRef, null);

while (task.Info.State != TaskInfoState.success)
{
    Thread.Sleep(5000);
    task.UpdateViewData();
    if (task.Info.State == TaskInfoState.error)
        throw new Exception($"The clone failed: {task.Info.Error.LocalizedMessage}");

    Console.WriteLine(task.Info.Progress);
}