Как получить информацию о сервере от VMware

У меня есть доступ к графическому интерфейсу VMWare, и я могу легко экспортировать все столбцы, такие как UPtime, IPAddress, Notes, DNS, GuestOs, State, Name и так далее.

Я хочу исправить сценарий, который может автоматически получать эту информацию ежедневно. Итак, я смог получить только имя сервера, состояние питания и VMhost. по какой-то причине VMware так усложняет извлечение этой информации. Я использовал приведенный ниже сценарий и подумал, что, добавив в этот сценарий столбцы, о которых я упоминал выше, я смогу удалить нужные мне данные. Но это не так. Может кто-нибудь, пожалуйста, скажите мне, как я могу получить эту информацию?

Спасибо,

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

person mkatouzi    schedule 15.06.2015    source источник


Ответы (2)


После копания в системе и многих часов исследований я нашел решение. Я просто хочу, чтобы 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"
person mkatouzi    schedule 16.06.2015

Почему бы не использовать просмотры? У них есть вся необходимая информация. Код ниже предполагает, что вы подключены к 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
person Wisman    schedule 13.07.2015