Skip to content

VirtuallyThatGuy

Anything VMware , PowerCLI, PowerShell, Automation and some Windows

Menu
  • Home
  • PowerCLI
  • VMware
  • Automation
  • Windows
  • About
Menu

How to gather vCenter Inventory, Number of VMs, ESXi Hosts and VCSA Node ID Using PowerCLI – VirtuallyThatGuy

Posted on July 8, 2018December 19, 2025 by VirtuallyThatGuy

I am the biggest fan of using CSV for automating my VMware estate but wanted to try the HTML flavour for a change. Join me explore the possibilities of collecting these results in an html readable format.

#Script for collecting VM details and exporting them to HTML report.

$vCenterServers = @()

#Set vCenter Servers Variables.
$vCenterServers = "uk3p-vc01.lab.local", "ntcp-vc01.lab.local", "hdcp-vc01.lab.local"

$a = "<style>"
$a = $a + "BODY{background-color:peachpuff;}"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;width: 100%}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:palegoldenrod}"
$a = $a + "</style>"

foreach ($vCenterServer in $vCenterServers)
{
#Connect to the vCenters Specified above
Connect-VIServer $vCenterServer

#Using .count to count the entities
$total_hosts = (Get-VMHost).count
$total_vms = (get-vm).count
$file_name = Get-Date -UFormat "C:\Scripts\$vCenterServer/%B/%Y-%b-%d @ %I-%M%p.html"

Get-VM |
select Name,Host,@{N="Cluster";E={@($_.host.parent.name)}}, PowerState, @{N="IP Address";E={@($_.guest.IPAddress[0])}} |
Sort Name | ConvertTo-Html -Head $a -Body "
<h2>No of Hosts : $total_hosts -+- No of VMs : $total_vms</h2>
" |
Out-File -FilePath $file_name
Disconnect-VIServer $vCenterServer -Force -Confirm:$false
}
## Bonus retrieving vCenter Details

$vCenterServers = "uk3p-vc01.lab.local", "ntcp-vc01.lab.local", "hdcp-vc01.lab.local"
Connect-VIServer $vCenterServer

### Get vCenter ID

$si = Get-View ServiceInstance
$setting = Get-View $si.Content.Setting
$setting.QueryOptions("instance.id") | Select -ExpandProperty Value 

disconnect-VIServer $vCenterServer 

#Script for collecting VM details and exporting​​ them​​ to HTML report.

 

$vCenterServers​​ =​​ @()

 

#Set vCenter Servers Variables.

$vCenterServers​​ =​​ "uk3p-vc01.lab.local",​​ "ntcp-vc01.lab.local",​​ "hdcp-vc01.lab.local"

 

$a​​ =​​ "<style>"

$a​​ =​​ $a​​ +​​ "BODY{background-color:peachpuff;}"

$a​​ =​​ $a​​ +​​ "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;width: 100%}"

$a​​ =​​ $a​​ +​​ "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"

$a​​ =​​ $a​​ +​​ "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:palegoldenrod}"

$a​​ =​​ $a​​ +​​ "</style>"

 

foreach​​ ($vCenterServer​​ in​​ $vCenterServers)

{

#Connect to the vCenters Specified above

Connect-VIServer​​ $vCenterServer

 

#Using​​ .count to count the entities

$total_hosts​​ =​​ (Get-VMHost).count

$total_vms​​ =​​ (get-vm).count

$file_name​​ =​​ Get-Date​​ -UFormat​​ "C:\Scripts\$vCenterServer/%B/%Y-%b-%d @ %I-%M%p.html"

 

Get-VM​​ |

select​​ Name,Host,@{N="Cluster";E={@($_.host.parent.name)}},​​ PowerState,​​ @{N="IP Address";E={@($_.guest.IPAddress[0])}}​​ |

Sort​​ Name​​ |​​ ConvertTo-Html​​ -Head​​ $a​​ -Body​​ "

<h2>No of Hosts :​​ $total_hosts​​ -+- No of VMs :​​ $total_vms</h2>

"​​ |

Out-File​​ -FilePath​​ $file_name

Disconnect-VIServer​​ $vCenterServer​​ -Force​​ -Confirm:$false

}

## Bonus retrieving vCenter Details

 

$vCenterServers​​ =​​ "uk3p-vc01.lab.local",​​ "ntcp-vc01.lab.local",​​ "hdcp-vc01.lab.local"

Connect-VIServer​​ $vCenterServer

 

### Get vCenter ID

 

$si​​ =​​ Get-View​​ ServiceInstance

$setting​​ =​​ Get-View​​ $si.Content.Setting

$setting.QueryOptions("instance.id")​​ |​​ Select​​ -ExpandProperty​​ Value​​ 

 

disconnect-VIServer​​ $vCenterServer​​ 

 

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • vROps: Management Pack Troubleshooting
  • Windows AD {Active Directory} (PowerShell) samples
  • Migrate VMs Between vCentres Using Powershell or PowerCLI
  • Set VM Tools to Update Automatically on VM Reboot using powershell
  • Windows Administrator Must Have Powershell Commands

Recent Comments

  • JB on Script: How to get VM with Tag Assignment and export results to csv using PowerCLI or Powershell
  • DL on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • 360coolp on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • Yogesh on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy
  • VirtuallyThatGuy on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy

Archives

  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017

Categories

  • Automation
  • PowerCLI
  • VMware
  • Windows
© 2026 VirtuallyThatGuy | Powered by Superbs Personal Blog theme