【问题标题】:Not getting any data when running the following code with c#, powershell and asp.net使用 c#、powershell 和 asp.net 运行以下代码时未获取任何数据
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您调用了两次PSINSTANCE.Invoke(),删除第一个调用并重试。

    【讨论】:

    • 删除了它,但仍然没有得到结果。还有什么我可以尝试的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多