2015-06-15 25 views
0

我可以訪問VMWare GUI,並且可以輕鬆導出UPtime,IPAddress,Notes,DNS,GuestOs,State,Name等所有列。如何從VMware獲取服務器信息

我想要一個能夠每天自動獲取這些信息的腳本。因此,我只能得到服務器名稱,電源狀態和VMhost。由於某些原因,VMware正在很難提取這些信息。我使用了下面的腳本,我想通過將上面提到的列添加到這個腳本中,我應該能夠退出我需要的數據。但是這種方式不行。有人可以告訴我如何獲得這些信息嗎?

感謝,

Add-PSSnapin vmware.vimautomation.core 
Connect-VIServer SERVERNAME 
Get-VM|Select Name, VMHost, Id, PowerState 
Exit 0 

回答

0

挖掘到系統中,許多小時的研究後,我找到了解決辦法。我只是希望VMWare能夠更輕鬆地檢索數據或至少改進手冊。 以下代碼創建兩個文件;一個帶有服務器信息,另一個帶有Uptime信息。

Get-VM | select name,VMHost, @{ Name = "IP Addresses"; Expression = { $_.Guest.IPAddress }}, @{ Name = "PowerState"; Expression = { $_.Guest.State }} , @{ Name = "GuestOS"; Expression = { $_.Guest }}, Notes | Export-Csv -Path "HQstat.csv" 
Get-Stat -Entity * -Stat sys.uptime.latest -Realtime -MaxSamples 1| Export-Csv -Path "HQtime.csv" 
0

爲什麼不使用視圖?他們擁有所有你需要的信息。下面的代碼假定您已連接到vCenter。

$vmView = Get-View -ViewType VirtualMachine -Property Name,Config,Guest,Runtime 
$hostView = Get-View -ViewType HostSystem -Property Name 
$date = Get-Date 
Foreach ($vm in $vmView) 
{ 
    If ($vm.Runtime.BootTime -ne $null) 
    { 
     $dateDiff = $date.Subtract($vmView.Runtime.BootTime) 
    } 
    Else 
    { 
     $dateDiff = $null 
    } 
    foreach ($h in $hostView) 
    { 
     If ($vm.Runtime.Host -eq $h.MoRef) 
     { 
      $tempHost = $($h.Name) 
      Break 
     } 
    } 
    $global:Export += @([PSCustomObject]@{ 
     VMName = $($vm.Name) 
     ID = $($vm.Config.Uuid) #or use $($vm.MoRef) 
     Host = $tempHost 
     PowerState = $($vm.Guest.GuestState) 
     IPAddress = $($vm.Guest.IPAddress) 
     Notes = $($vm.Config.Annotations) 
     UptimeMinutes = $($dateDiff.TotalMinutes) 
     }) 

    $dateDiff = $null 
    $tempHost = $null 
} 
$exportFileName = "C:\temp\VMInformation.csv" 

$Export | Export-Csv $exportFileName -Force -NoTypeInformation 
相關問題