LucD
Leadership
Leadership

Try something like this

$report = @()
$vmName = 'MyVM'

foreach ($dc in Get-Datacenter) {
    $dcVm = Get-View -ViewType VirtualMachine -Property Name -SearchRoot $dc.ExtensionData.MoRef
    foreach ($cluster in Get-Cluster -Location $dc){
      $vms = Get-view -ViewType VirtualMachine -SearchRoot $cluster.ExtensionData.MoRef -Filter @{Name="^$vmName$"}
      foreach ($vm in $vms){
        $info = "" | select Datacenter, Cluster, Name, ToolsStatus, NumCpu, MemoryMB, guestos, IPAddress,
            Datastore, DatastoreUsedGB,NrVMperDC,NrVMperCluster
        $info.Datacenter = $dc.Name
        $info.Cluster = $cluster.Name
        $info.IPAddress = ($vm.Guest.net.IPAddress | where{$_} | Sort-Object -Unique) -join '|'
        $info.Datastore = (Get-View -Id $vm.Datastore -Property Name).Name -join '|'
        $info.DatastoreUsedGB = [math]::Round(($vm.Storage.PerDatastoreUsage.Committed | Measure-Object -Sum).Sum/1GB,1)
        $info.datacenter = $dc.name
        $info.Name = $vm.name
        $info.toolsstatus = $vm.guest.toolsstatus
        $info.NumCpu = $vm.Summary.config.NumCpu
        $info.MemoryMB = $vm.Summary.config.memorySizeMB
        $info.guestos = $vm.guest.guestfullname
        $info.NrVMperDC = $dcVm.Count
        $info.NrVmperCluster = $vms.Count
        $report += $info
      }
    }
}

$report | export-csv "\Report.csv"


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

Reply
0 Kudos