2015-06-15 4 views
0

У меня есть доступ к графическому интерфейсу VMWare, и я могу легко экспортировать все столбцы, такие как 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 упростило получение данных или, по крайней мере, улучшило руководство. Следующий код создает два файла; один с информацией о сервере, а другой с информацией о времени работы.

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