使用 vSphere PowerCLI .net API 加载会话文件不起作用

Loading a session file with vSphere PowerCLI .net API does not work

我正在使用 vSphere PowerCLI SDK 通过 F# 和 .Net 将一些命令发送到我的一台虚拟机。为了连接,我使用了 vimClient.Login(username, password) 函数,一切正常。不幸的是,我不想每次都输入我的用户名和密码,也不想将其硬编码在代码中。

我找到的一个解决方案是保存会话文件并在下次我想通过 F# 和 .Net 发送命令时加载它,如以下 VMware 文档(第 14 页底部)中所述:VMware documentation

不幸的是,这似乎不起作用。该文件在我调用 vimClient.SaveSession("VimSession.txt") 时正确创建,但是当我 vimClient.LoadSession("VimSession.txt") 然后尝试使用以下行获取实体时:

let vmViews = vimClient.FindEntityViews(typedefof<VirtualMachine>, null, filterVms, null)
                |> Seq.cast<VirtualMachine>
                |> Seq.toList

我得到一个空错误,这意味着它没有找到任何视图。

我做错了什么?

终于找到问题所在了。我正在关闭客户端的连接,所以当我加载我的会话文件时,它没有工作,因为连接没有打开,现在回想起来是合乎逻辑的。

如果您想使用会话文件,请确保不要调用 vimClient.Logout(),否则您将 运行 遇到与我相同的问题。也要小心,因为我认为 vSphere 服务器上打开的会话超时时间过长,因此这也可能成为一个问题(但可以配置)。