运行 以下代码使用 c#、powershell 和 asp.net 时未获取任何数据

Not getting any data when running the following code with c#, powershell and asp.net

我在这里做错了什么?我有以下内容,它实际上通过 PowerShell 调用 PowerCLI 命令,然后 returns 通过 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 中的此命令 returns 我的 vCenter 中的一堆对象。这真的很奇怪,没有真正的原因为什么这不起作用,所以任何指针都会有所帮助。

您正在调用 PSINSTANCE.Invoke() 两次,请移除第一个调用并重试。

代码很好。不高兴的是 asp 中传递的变量。网络会话。视图状态来救援。感谢大家花时间回答。