2017-08-02 63 views
0

我在這裏做錯了什麼?我有以下實際上通過PowerShell調用PowerCLI命令,然後通過c#將數據返回到asp.net。即使命令看起來正確,我也沒有收到任何返回的數據。有任何想法嗎?運行c#,powershell和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返回一堆對象。這真的很奇怪,沒有真正的原因,爲什麼這不起作用,所以任何指針都會有幫助。

+0

'result'是否包含'PSObject'還是它是[vmware inventory class?](https://blogs.vmware.com/PowerCLI/2016/04/powercli-best-practice-correct-use-strong- typing.html) – brendan62269

+0

結果包含集合

+0

您是否擁有VC上的有效證書?也就是說,如果您從powershell/cli嘗試相同的命令,您是否會收到有關無效證書的警告? – brendan62269

回答

1

代碼很好。什麼是不滿意的是在ASP內傳遞的變量。網絡會話。查看狀態以進行救援。感謝大家花時間回答。

0

您打給PSINSTANCE.Invoke()兩次,刪除第一個電話並重試。

+0

刪除它,我仍然沒有得到結果。還有什麼我可以嘗試? –