2013-05-21 29 views
0

我正在尋找一種簡單的方法來獲取esx服務器在c#中的日期和時間。 這必須是硬件時間,所以我認爲這是BIOS時間。當虛擬機重新啓動時,它通常會獲得BIOS時間。那是我想作爲日期時間對象的時間。在C#中獲取ESX服務器的日期時間#

我想我應該用這樣的:

private DateTime getTimeESX(Machine machine) 
{ 
    DateTime time = new DateTime(); 

    Runspace runSpace = RunspaceFactory.CreateRunspace(); 
    runSpace.Open(); 
    Pipeline pipeline = runSpace.CreatePipeline(); 

    Command getEsxCli = new Command("Get-EsxCli"); 
    getEsxCli.Parameters.Add("Server", machine.IP); 
    Command getSysTime = new Command("system time get"); 
    pipeline.Commands.Add(getEsxCli); 
    pipeline.Commands.Add(getSysTime); 

    Collection<PSObject> output = pipeline.Invoke(); 
    foreach (PSObject psObject in output) 
    { 
     time = (DateTime)psObject.BaseObject; 
    } 
    return time; 
} 

是否有人有一個想法如何,我可以很容易地測試這個?我的網絡中沒有運行ESX。

+0

請詳細說明。您是否將網絡擴展到ESX服務器?還是你想要在虛擬機中運行代碼的主機操作系統的硬件時間?或者是其他東西?如果你只是想要運行代碼的機器時間,那麼ESX與它無關。還請提供任何代碼示例,說明您嘗試過的方法無效,或者您可能期望的工作 - 即使它不在SDK中。這將有助於澄清你的問題。 –

+0

這個想法是監視和記錄網絡中所有關鍵設備的時間戳,例如工作站,ntp服務器,esx等。我很清楚這樣一個事實,即我可以分別訪問每個虛擬機以獲取時間戳。但我想要esx硬件機器本身的時間戳。到目前爲止,我只有基本的方法: –

+0

使用VMware.Vim; 私人的DateTime getTimeESX(串IP,用戶的字符串,字符串通) { 的DateTime時間=新的DateTime(); VimClient c = new VimClient(); ServiceContent sc = c.Connect(ip); UserSession us = c.Login(user,pass); 返回時間; } 有了這個代碼,我應該能夠連接到ESX,但我不知道用接收時間戳什麼命令.. THX, 肯尼 –

回答

1

由於文檔顯示一切爲PowerShell命令,你將不得不這樣翻譯成C#自己。但你可以做到以下幾點:

+0

THX很多對您有所幫助!請參閱上面的修改。希望你也可以幫忙。 –

相關問題