【发布时间】:2017-08-02 16:19:58
【问题描述】:
我在这里做错了什么?我有以下实际上通过 PowerShell 调用 PowerCLI 命令,然后通过 c# 将数据返回到 asp.net。即使命令看起来正确,我也没有得到任何返回的数据。有什么想法吗?
public List<string> ReturnVMsToStrings(string VCENTER_NAME, PSCredential credential)
{
InitialSessionState PS_ISS;
VI_SERVER_NAME = VCENTER_NAME;
string[] IMPORT_MODULES = { "VMWare.PowerCLI", "NimblePowerShellToolkit" };
PS_ISS = InitialSessionState.CreateDefault();
PS_ISS.ImportPSModule(IMPORT_MODULES);
PowerShell PSINSTANCE = PowerShell.Create(PS_ISS);
Collection<PSObject> result;
PSINSTANCE.Commands.AddCommand("Connect-VIServer");
PSINSTANCE.Commands.AddParameter("Server", VI_SERVER_NAME);
PSINSTANCE.Commands.AddParameter("Credential", credential);
PSINSTANCE.Invoke();
// Get the VMs
PSINSTANCE.Commands.AddCommand("Get-VM");
result = PSINSTANCE.Invoke();
List<string> sorted_list = new List<string>();
if (result.Count > 0)
{
foreach (PSObject obj in result)
{
sorted_list.Add(obj.Properties["Name"].Value.ToString());
}
sorted_list.Sort();
}
else
{
Exception e = new Exception("Result is empty");
throw e;
}
return sorted_list;
}
结果中没有数据。从 PowerShell 运行此命令会从我的 vCenter 中返回一堆对象。这真的很奇怪,没有真正的原因为什么它不起作用,所以任何指针都会有所帮助。
【问题讨论】:
-
result是否包含PSObject还是 vmware inventory class? -
结果包含集合
-
你在VC上有一个有效的证书吗?也就是说,如果您从 powershell/cli 尝试相同的命令,您会收到有关无效证书的警告吗?
-
证书很好,我从 powershell 上的 CLI 运行没有错误。这让我很困惑......
标签: c# asp.net powershell powercli