{"id":71,"date":"2016-06-28T10:50:52","date_gmt":"2016-06-28T10:50:52","guid":{"rendered":"http:\/\/vblog.hochsticher.de\/?p=71"},"modified":"2016-10-13T08:57:14","modified_gmt":"2016-10-13T06:57:14","slug":"report-report-your-vm-groth-per-cluster-part-1of2-collect-data","status":"publish","type":"post","link":"https:\/\/vblog.hochsticher.de\/?p=71","title":{"rendered":"Report your VM growth per Cluster (Part 1of2 Collect Data)"},"content":{"rendered":"<p>What about a Report about your VM growth per Cluster?<\/p>\n<p>The only thing we use is Excel, PowerCLI and HTML-Reports. I\u00a0show you how to build that.<\/p>\n<p><!--more--><\/p>\n<p>First we collect our data with PowerCLI (4 Reports)<\/p>\n<ol>\n<li>VMs per Cluster<\/li>\n<li>Count Guest OS<\/li>\n<li>Host Inventory<\/li>\n<li>Datastore Inventory<\/li>\n<\/ol>\n<p>\n\n\t<div class='ngg-imagebrowser'\n         id='ngg-imagebrowser-86-71'\n         data-nextgen-gallery-id=\"86\">\n\n        <h3>report-vms<\/h3>\n\n        <div id=\"ngg-image-0\" class=\"pic\" >\n\n        <a href='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms.jpg'\n           title=' '\n           data-src=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms.jpg\"\n           data-thumbnail=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/thumbs\/thumbs_report-vms.jpg\"\n           data-image-id=\"7\"\n           data-title=\"report-vms\"\n           data-description=\" \"\n           class=\"ngg-fancybox\" rel=\"86\">\n            <img title='report-vms'\n                 alt='report-vms'\n                 src='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms.jpg'\/>\n        <\/a>\n\n        <\/div> \n\n        <div class='ngg-imagebrowser-nav'>\n\n            <div class='back'>\n                <a class='ngg-browser-prev'\n                   id='ngg-prev-6'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-hostinv-raw?p=71'>\n                    &#9668; Back                <\/a>\n            <\/div>\n\n            <div class='next'>\n                <a class='ngg-browser-next'\n                   id='ngg-next-8'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-vms-raw?p=71'>\n                    Next                    &#9658;\n                <\/a>\n            <\/div>\n\n            <div class='counter'>\n                Picture                1                of                5            <\/div>\n\n            <div class='ngg-imagebrowser-desc'>\n                <p> <\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>VMs per Cluster:<\/p>\n<pre class=\"lang:default decode:true \">#Load Powercli Snapin\r\nAdd-PSSnapin VMware.VimAutomation.Core\r\n\r\n#Connect vCenter Server\r\nConnect-VIServer -server yourvcenter.local -User administrator@vsphere.local -password yourpassword\r\n\r\n#Define Var\r\n$vmscsv = \t\t\"L:\\HTML-Reports\\VMs-per-Cluster\\CSV\\All-VMs\" + \".csv\"\r\n                                    \r\n#html-out files                     \r\n$vmhtml = \t\t\"L:\\HTML-Reports\\VMs-per-Cluster\\All-VMs\" + \".html\"\r\n\r\n\r\n#html custom\r\n$custom = '&lt;style&gt;\r\nBODY{background-color:#A4D7D2;}\r\nTABLE{border-width:1px; border-style:solid; border-color:black; border-collapse:collapse;}\r\nTH{border-width:1px; padding:0px; border-style:solid; border-color:black;}\r\nTD{border-width:1px; padding:0px; border-style:solid; border-color:black;}\r\n&lt;\/style&gt;'\r\n\r\n\r\n#get-cluster \t\t\t\t\t\t\t\t|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }} | Out-File -Append -FilePath $fileNameVM\r\n$ClusterA = \tget-cluster ClusterA|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }},@{Label='Date';Expression={(Get-Date).ToString('dd-MM-yyyy')}}\r\n$ClusterB = \tget-cluster ClusterB|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }},@{Label='Date';Expression={(Get-Date).ToString('dd-MM-yyyy')}}\r\n$ClusterC =\t\tget-cluster ClusterC|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }},@{Label='Date';Expression={(Get-Date).ToString('dd-MM-yyyy')}}\r\n$ClusterD =\t\tget-cluster ClusterD|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }},@{Label='Date';Expression={(Get-Date).ToString('dd-MM-yyyy')}}\r\n$ClusterE = \tget-cluster ClusterE|  select-object name, @{Name=\"VMCount\"; Expression = {(get-vm -location $_ | measure-object).count }},@{Label='Date';Expression={(Get-Date).ToString('dd-MM-yyyy')}}\r\n\r\n#Build Array\r\n$Object = New-Object PSObject -Property @{            \r\n        Date                = $ClusterA.Date\r\n\t\t$ClusterA.name\t\t= $ClusterA.VMCount \r\n\t\t$ClusterB.name\t\t= $ClusterB.VMCount \r\n\t\t$ClusterC.name\t\t= $ClusterC.VMCount \r\n\t\t$ClusterD.name\t\t= $ClusterD.VMCount \r\n\t\t$ClusterE.name\t\t= $ClusterE.VMCount \t\r\n        \"All VMs\"           = $ClusterA.VMCount+$ClusterB.VMCount+$ClusterC.VMCount+$ClusterC.VMCount+$ClusterD.VMCount+ClusterE.VMCount   \r\n    }    \r\n\r\n\r\n#Sort Object &amp; Convert to CSV\r\n$Object | select \"Date\",\"All VMs\",$ClusterA.name,$ClusterB.name,$ClusterC.name,$ClusterD.name,$ClusterE.name | export-csv -Append -Delimiter \";\" -Encoding UTF8 -Path $vmscsv\r\n\r\n\r\n#Convert to Html\r\nImport-Csv $vmscsv -Delimiter \";\" | ConvertTo-HTML | Out-File $vmhtml\r\n\r\n\r\n#Disconnect vCenter Server\r\nDisconnect-VIServer * -Confirm:$false<\/pre>\n<p>\n\n\t<div class='ngg-imagebrowser'\n         id='ngg-imagebrowser-93-71'\n         data-nextgen-gallery-id=\"93\">\n\n        <h3>report-vms-raw<\/h3>\n\n        <div id=\"ngg-image-0\" class=\"pic\" >\n\n        <a href='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms-raw.jpg'\n           title=' '\n           data-src=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms-raw.jpg\"\n           data-thumbnail=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/thumbs\/thumbs_report-vms-raw.jpg\"\n           data-image-id=\"8\"\n           data-title=\"report-vms-raw\"\n           data-description=\" \"\n           class=\"ngg-fancybox\" rel=\"93\">\n            <img title='report-vms-raw'\n                 alt='report-vms-raw'\n                 src='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-vms-raw.jpg'\/>\n        <\/a>\n\n        <\/div> \n\n        <div class='ngg-imagebrowser-nav'>\n\n            <div class='back'>\n                <a class='ngg-browser-prev'\n                   id='ngg-prev-8'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-vms-raw?p=71'>\n                    &#9668; Back                <\/a>\n            <\/div>\n\n            <div class='next'>\n                <a class='ngg-browser-next'\n                   id='ngg-next-8'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-vms-raw?p=71'>\n                    Next                    &#9658;\n                <\/a>\n            <\/div>\n\n            <div class='counter'>\n                Picture                1                of                1            <\/div>\n\n            <div class='ngg-imagebrowser-desc'>\n                <p> <\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/p>\n<hr \/>\n<p>Count Guest OS:<\/p>\n<pre class=\"lang:ps decode:true\">#Load Powercli Snapin\r\nAdd-PSSnapin VMware.VimAutomation.Core\r\n\r\n#Connect vCenter Server\r\nConnect-VIServer -server yourvcenter.local -User administrator@vsphere.local -password yourpasswd\r\n\r\n#def var\r\n$path1 = \"L:\\HTML-Reports\\Kennzahlen\\GuestOS\\CSV\\GuestOS-latest\" + \".csv\"\r\n$path2 = \"L:\\HTML-Reports\\Kennzahlen\\GuestOS\\GuestOS-latest\" + \".html\"\r\n\r\n#get vms by guest name\r\n$arrOS = ( Get-VM  | Get-View).summary.config.guestFullName\r\n$arrOS | Group-Object | Where-Object {$_.Count -gt 1} | select Name, Count | sort Name | export-csv -Delimiter \";\" -Encoding UTF8 -Path $path1\r\n\r\n#convert to html\r\nImport-Csv $path1 -Delimiter \";\" | ConvertTo-HTML | Out-File $path2\r\n\r\n#Disconnect vCenter Server\r\nDisconnect-VIServer * -Confirm:$false\r\n<\/pre>\n<p>\n\n\t<div class='ngg-imagebrowser'\n         id='ngg-imagebrowser-95-71'\n         data-nextgen-gallery-id=\"95\">\n\n        <h3>report-gos-raw<\/h3>\n\n        <div id=\"ngg-image-0\" class=\"pic\" >\n\n        <a href='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-gos-raw.jpg'\n           title=' '\n           data-src=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-gos-raw.jpg\"\n           data-thumbnail=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/thumbs\/thumbs_report-gos-raw.jpg\"\n           data-image-id=\"5\"\n           data-title=\"report-gos-raw\"\n           data-description=\" \"\n           class=\"ngg-fancybox\" rel=\"95\">\n            <img title='report-gos-raw'\n                 alt='report-gos-raw'\n                 src='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-gos-raw.jpg'\/>\n        <\/a>\n\n        <\/div> \n\n        <div class='ngg-imagebrowser-nav'>\n\n            <div class='back'>\n                <a class='ngg-browser-prev'\n                   id='ngg-prev-5'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-gos-raw?p=71'>\n                    &#9668; Back                <\/a>\n            <\/div>\n\n            <div class='next'>\n                <a class='ngg-browser-next'\n                   id='ngg-next-5'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-gos-raw?p=71'>\n                    Next                    &#9658;\n                <\/a>\n            <\/div>\n\n            <div class='counter'>\n                Picture                1                of                1            <\/div>\n\n            <div class='ngg-imagebrowser-desc'>\n                <p> <\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/p>\n<hr \/>\n<p>Host Inventory:<\/p>\n<pre class=\"lang:default decode:true\">###########################################################################################\r\n# Creates a HTML Output of your Host with informations like Name, Manufacturer,Version,etc#\r\n###########################################################################################\r\n\r\n\r\n#Load Powercli Snapin\r\nAdd-PSSnapin VMware.VimAutomation.Core\r\n\r\n\r\n#Connect vCenter Server\r\nConnect-VIServer -server yourvcenter.local -User administrator@vsphere.local -password yourpassword\r\n\r\n#Define Var\r\n$htmlfile = \"L:\\HTML-Reports\\Inventory\\ESX-Hosts\\older-versions\\Hosts-\" + (Get-Date -Format yyyy-MM-dd) + \".html\"\r\n$htmlfile2 = \"L:\\HTML-Reports\\Inventory\\ESX-Hosts\\Hosts-lastest-\"  + \".html\"\r\n$date = (Get-Date -Format yyyy-MM-dd)\r\n$logo = '&lt;img src=\"http:\/\/your-logo.svg\" alt=\"\" align=\"right\"&gt;'\r\n\r\n\r\n#html custom\r\n$custom = '&lt;style&gt;\r\n  BODY{background-color:#A4D7D2;}\r\n  TABLE{border-width:1px; border-style:solid; border-color:black; border-collapse:collapse;}\r\n  TH{border-width:1px; padding:1px; border-style:solid; border-color:black;}\r\n  TD{border-width:1px; padding:1px; border-style:solid; border-color:black;}\r\n&lt;\/style&gt;'\r\n\r\n\r\n\r\n function Get-VMHostinventory {\r\n   &lt;#\r\n       .SYNOPSIS\r\n       Collects \r\n       .DESCRIPTION\r\n       Detailed Description\r\n       .EXAMPLE\r\n       Get-VMHostinventory youresxhost\r\n       Get-VMHostinventory *\r\n       explains how to use the command\r\n       can be multiple lines\r\n       .EXAMPLE\r\n       Get-cdpinfo\r\n       another example\r\n       can have as many examples as you like\r\n   #&gt;\r\n   param\r\n   (\r\n     [Parameter(Mandatory=$true)]\r\n  \r\n     $EsxHost\r\n  \r\n   )   \r\n    foreach ($vmhost in (Get-VMHost $EsxHost)) {  \r\n     Write-host $vmhost.Name  \r\n\r\n     if ($vmhost.Version -ne \"4.1.0\") {  \r\n       $esxcli = $vmhost | Get-EsxCli  \r\n       $serviceTag = $esxcli.hardware.platform.get().SerialNumber  \r\n     }  \r\n        else {  \r\n             $serviceTag = $vmhost.ExtensionData.summary.hardware.otheridentifyinginfo | select-object -ExpandProperty IdentifierValue -last 1  \r\n        }  \r\n             \r\n     #Esxihost Management IP and vlan ID  \r\n     $Managementinfo = $vmhost | Get-VMHostNetworkAdapter | Where-Object {$_.ManagementTrafficEnabled -eq $true}  \r\n     $VirtualPortGroup = $vmhost | Get-VirtualPortGroup  \r\n        $IPinfo = $Managementinfo | select-object -ExpandProperty ip  \r\n     $ManagementPortGroup = $Managementinfo.extensiondata.spec  \r\n     $ManagementIP = $IPinfo -join \", \"  \r\n       \r\n     $MulitvLans = @()  \r\n     if ($ManagementPortGroup.DistributedVirtualPort -ne $null) {  \r\n       $vLanIDinfo = $VirtualPortGroup | Where-Object {$Managementinfo.PortGroupName -contains $_.name}  \r\n       foreach ($MGMTVlan in $vLanIDinfo) {  \r\n         $MulitvLans += $MGMTVlan.ExtensionData.config.DefaultPortConfig.Vlan.VlanId  \r\n       }  \r\n       $vLanID = $MulitvLans -join \", \"  \r\n     }  \r\n     else {  \r\n       $vLanIDinfo = $VirtualPortGroup | Where-Object {$ManagementPortGroup.Portgroup -contains $_.name } | Select-Object -ExpandProperty VLanId  \r\n       foreach ($MGMTVlan in $vLanIDinfo) {  \r\n         $MulitvLans += $MGMTVlan  \r\n       }  \r\n       $vLanID = $MulitvLans -join \", \"  \r\n     }  \r\n       \r\n     #EsxiHost CPU info  \r\n     $HostCPU = $vmhost.ExtensionData.Summary.Hardware.NumCpuPkgs  \r\n     $HostCPUcore = $vmhost.ExtensionData.Summary.Hardware.NumCpuCores\/$HostCPU  \r\n   \r\n     #All Virtual Machines Info  \r\n     $VMs = $vmhost | Get-VM   \r\n     $PoweredOnVM = $VMs | Where-Object {$_.PowerState -eq \"PoweredOn\"}  \r\n   \r\n     #EsxiHost and VM -- CPU calculation  \r\n     $AssignedTotalvCPU = $VMs | Measure-Object NumCpu -Sum | Select-Object -ExpandProperty sum  \r\n     $PoweredOnvCPU = $PoweredOnVM | Measure-Object NumCpu -Sum | Select-Object -ExpandProperty sum  \r\n     $onecoreMhz = $vmhost.CPUTotalMhz \/ $vmhost.NumCpu  \r\n     $TotalPoweredOnMhz = $onecoreMhz * $PoweredOnvCPU  \r\n       \r\n     #EsxiHost and VM -- Memory calculation  \r\n     $TotalMemory = [math]::round($vmhost.MemoryTotalGB)  \r\n     $Calulatedvmmemory = $VMs | Measure-Object MemoryGB -sum | Select-Object -ExpandProperty sum  \r\n     $TotalvmMemory = [math]::round($Calulatedvmmemory)  \r\n     $Calulatedvmmemory = $PoweredOnVM | Measure-Object MemoryGB -sum | Select-Object -ExpandProperty sum  \r\n     $PoweredOn_vMemory = \"{0:N2}\" -f $Calulatedvmmemory  \r\n   \r\n     #EsxiHost Domain Details  \r\n     $domain = ($vmhost | Get-VMHostAuthentication).Domain  \r\n   \r\n     #Cluster and Datstore info  \r\n     $Clusterinfo = $vmhost | Get-Cluster  \r\n     $Clustername = $Clusterinfo.Name  \r\n     $DataCenterinfo = Get-DataCenter -VMHost $VMHost.Name  \r\n     $Datacentername = $DataCenterinfo.Name  \r\n   \r\n     #vCenterinfo  \r\n     $vCenter = $vmhost.ExtensionData.CLient.ServiceUrl.Split('\/:')[3]  \r\n     $vcenterversion = $global:DefaultVIServers | where {$_.Name -eq $vCenter} | %{\"$($_.Version) build $($_.Build)\"}  \r\n   \r\n     #vmhost SSH service Staus  \r\n     $SSHservice = $vmhost | Get-VMHostService | Where-object {$_.key -eq \"Tsm-ssh\"} | Select-Object -ExpandProperty running  \r\n   \r\n     #vmhost Uptime  \r\n     $UPtime = (Get-Date) - ($vmhost.ExtensionData.Runtime.BootTime) | Select-Object -ExpandProperty days  \r\n\t \r\n     #BIOS\r\n     $BIOS = $vmhost.ExtensionData.Hardware.BiosInfo.BiosVersion \r\n   \r\n     #vmhost syslog server settings  \r\n     if ($vmhost.Version -ne \"4.1.0\") {  \r\n       $syslog = ($vmhost | Get-AdvancedSetting -Name Syslog.global.logHost).value  \r\n     }  \r\n     else {$syslog = \"Not Supported\"}  \r\n           \r\n       \r\n     #vmhost Dump collector  \r\n     $DumpCollector = $esxcli.system.coredump.network.get().NetworkServerIP  \r\n   \r\n     $VmHostresult = New-Object PSObject   \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Name\" -Value $vmhost.Name  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Management IP\" -Value $ManagementIP  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"vLan ID\" -Value $vlanID  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"PowerState\" -Value $vmhost.PowerState  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Manufacturer\" -Value $vmhost.Manufacturer  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Model\" -Value $vmhost.Model  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Service_Tag\" -Value $serviceTag  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"TotalVms\" -Value $VMs.count  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"PoweronVMs\" -Value $PoweredOnvm.Count  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"ProcessorType\" -Value $VMHost.ProcessorType  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"CPU_Sockets\" -Value $HostCPU  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"CPU_core_per_socket\" -Value $HostCPUcore  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Logical_CPUs\" -Value $vmhost.Numcpu  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"TotalHost_Mhz\" -Value $vmhost.CPUTotalMhz  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"AssignedTotal_vCPUs\" -Value $AssignedTotalvCPU  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"PoweredOn_vCPUs\" -Value $PoweredOnvCPU  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"PoweredOn_Mhz\" -Value $TotalPoweredOnMhz  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Memory(GB)\" -Value $TotalMemory  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"AssignedTotal-vMemory(GB)\" -Value $TotalvmMemory  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"PoweredOn-vMemory(GB)\" -Value $PoweredOn_vMemory  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Esxi-Version\" -Value $vmhost.Version  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Build-Number\" -Value $vmhost.Build  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Domain\" -Value $domain  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Max-EVC-Key\" -Value $vmhost.ExtensionData.Summary.MaxEVCModeKey  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"Cluster\" -Value $ClusterName  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"DataCenter\" -Value $DatacenterName  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"vCenter Server\" -Value $vcenter  \r\n     $VmHostresult | add-member -MemberType NoteProperty -Name \"vCenter version\" -Value $vcenterversion  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"Esxi-status\" -Value $vmhost.ExtensionData.Summary.OverallStatus  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"Physical-Nics\" -Value $vmhost.ExtensionData.summary.hardware.NumNics  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"SSH-Enabled\" -Value $SSHservice  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"Uptime\" -Value $UPtime  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"BIOS\" -Value $BIOS  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"Syslog-Server\" -Value $syslog  \r\n     $VMHostresult | add-member -MemberType NoteProperty -Name \"Dump-Collector\" -Value $DumpCollector  \r\n     $VmHostresult   \r\n   }  \r\n }  \r\n# Get-VMHostinventory   \r\n\r\n#To write information to csv file\r\nGet-VMHostinventory -EsxHost * | ConvertTo-Html -Title \"Hostinventory\" -Body \"&lt;H2&gt; Hostinventory $logo&lt;\/H2&gt; &lt;br&gt; &lt;H3&gt;Reporting Date :$date &lt;\/H3&gt; $custom \" |Out-File $htmlfile\r\n\r\n\r\n \r\n#Disconnect \r\nDisconnect-VIServer * -Confirm:$false\r\n\r\n#copy files for Archive\r\ncp $htmlfile $htmlfile2<\/pre>\n<p>\n\n\t<div class='ngg-imagebrowser'\n         id='ngg-imagebrowser-106-71'\n         data-nextgen-gallery-id=\"106\">\n\n        <h3>report-hostinv-raw<\/h3>\n\n        <div id=\"ngg-image-0\" class=\"pic\" >\n\n        <a href='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-hostinv-raw.jpg'\n           title=' '\n           data-src=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-hostinv-raw.jpg\"\n           data-thumbnail=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/thumbs\/thumbs_report-hostinv-raw.jpg\"\n           data-image-id=\"6\"\n           data-title=\"report-hostinv-raw\"\n           data-description=\" \"\n           class=\"ngg-fancybox\" rel=\"106\">\n            <img title='report-hostinv-raw'\n                 alt='report-hostinv-raw'\n                 src='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-hostinv-raw.jpg'\/>\n        <\/a>\n\n        <\/div> \n\n        <div class='ngg-imagebrowser-nav'>\n\n            <div class='back'>\n                <a class='ngg-browser-prev'\n                   id='ngg-prev-6'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-hostinv-raw?p=71'>\n                    &#9668; Back                <\/a>\n            <\/div>\n\n            <div class='next'>\n                <a class='ngg-browser-next'\n                   id='ngg-next-6'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-hostinv-raw?p=71'>\n                    Next                    &#9658;\n                <\/a>\n            <\/div>\n\n            <div class='counter'>\n                Picture                1                of                1            <\/div>\n\n            <div class='ngg-imagebrowser-desc'>\n                <p> <\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/p>\n<hr \/>\n<p>Datastore Inventory:<\/p>\n<pre class=\"lang:default decode:true \">#Load Powercli Snapin\r\nAdd-PSSnapin VMware.VimAutomation.Core\r\n\r\n#Connect vCenter Server\r\nConnect-VIServer -server yourvcenter.local -User administrator@vsphere.local -password yourpasswd\r\n\r\n\r\n$excludeDS = \"*local*\"\r\n$excludeDS2 = \"*vsphere-iso*\"\r\n$datastores = Get-Datastore | Sort Name| where {$_.Name -notlike $excludeDS} |  where {$_.Name -notlike $excludeDS2}\r\n\r\n\r\n$htmlfile = \"L:\\HTML-Reports\\Kennzahlen\\Datastore\\Datastores-latest.html\"\r\n$htmlfile2 = \"L:\\HTML-Reports\\Kennzahlen\\Datastore\\older-versions\\Datastores-\" + (Get-Date -Format yyyy-MM-dd) + \".html\"\r\n$csvfile = \"L:\\HTML-Reports\\Kennzahlen\\Datastore\\CSV\\Datastores-\" + (Get-Date -Format yyyy-MM-dd) + \".csv\"\r\n$date = Get-Date\r\n$logo = '&lt;img src=\"http:\/\/your-logo.svg\" alt=\"\" align=\"right\"&gt;'\r\n\r\n#html custom\r\n$custom = '&lt;style&gt;\r\nBODY{background-color:#A4D7D2;}\r\nTABLE{border-width:1px; border-style:solid; border-color:black; border-collapse:collapse;}\r\nTH{border-width:1px; padding:0px; border-style:solid; border-color:black;}\r\nTD{border-width:1px; padding:0px; border-style:solid; border-color:black;}\r\n&lt;\/style&gt;'\r\n\r\n\r\n\r\nFunction Percentcal {\r\n    param(\r\n    [parameter(Mandatory = $true)]\r\n    [int]$InputNum1,\r\n    [parameter(Mandatory = $true)]\r\n    [int]$InputNum2)\r\n    $InputNum1 \/ $InputNum2*100\r\n}\r\n\r\n\r\nForEach ($ds in $datastores)\r\n{\r\n    if (($ds.Name -match \u201cShared\u201d) -or ($ds.Name -match \u201c\u201d))\r\n    {\r\n        $PercentFree = Percentcal $ds.FreeSpaceMB $ds.CapacityMB\r\n        $PercentFree = \u201c{0:N2}\u201d -f $PercentFree\r\n        $ds | Add-Member -type NoteProperty -name PercentFree -value $PercentFree\r\n    }\r\n}\r\n$datastores | Select Name,@{N=\u201dUsedSpaceGB\u201d;E={[Math]::Round(($_.ExtensionData.Summary.Capacity \u2013 $_.ExtensionData.Summary.FreeSpace)\/1GB,0)}},@{N=\u201dTotalSpaceGB\u201d;E={[Math]::Round(($_.ExtensionData.Summary.Capacity)\/1GB,0)}} ,PercentFree | Export-Csv $csvfile -NoTypeInformation\r\n\r\n\r\n# Convert to HTML\r\nimport-csv -path $csvfile | ConvertTo-Html -Title \"Datastores\" -Body \"&lt;H2&gt; $logo Datastores &lt;\/H2&gt; &lt;br&gt; &lt;H3&gt;Reporting Date:$date &lt;br&gt;&lt;br&gt; &lt;br&gt; &lt;\/H3&gt; $custom \" |Out-File $htmlfile\r\n\r\n\r\n#Copy for Archive\r\ncp $htmlfile $htmlfile2\r\n\r\n#Disconnect \r\nDisconnect-VIServer * -Confirm:$false<\/pre>\n<p>\n\n\t<div class='ngg-imagebrowser'\n         id='ngg-imagebrowser-99-71'\n         data-nextgen-gallery-id=\"99\">\n\n        <h3>report-ds-raw<\/h3>\n\n        <div id=\"ngg-image-0\" class=\"pic\" >\n\n        <a href='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-ds-raw.jpg'\n           title=' '\n           data-src=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-ds-raw.jpg\"\n           data-thumbnail=\"https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/thumbs\/thumbs_report-ds-raw.jpg\"\n           data-image-id=\"4\"\n           data-title=\"report-ds-raw\"\n           data-description=\" \"\n           class=\"ngg-fancybox\" rel=\"99\">\n            <img title='report-ds-raw'\n                 alt='report-ds-raw'\n                 src='https:\/\/vblog.hochsticher.de\/wp-content\/gallery\/report-vms\/report-ds-raw.jpg'\/>\n        <\/a>\n\n        <\/div> \n\n        <div class='ngg-imagebrowser-nav'>\n\n            <div class='back'>\n                <a class='ngg-browser-prev'\n                   id='ngg-prev-4'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-ds-raw?p=71'>\n                    &#9668; Back                <\/a>\n            <\/div>\n\n            <div class='next'>\n                <a class='ngg-browser-next'\n                   id='ngg-next-4'\n                   href='https:\/\/vblog.hochsticher.de\/index.php\/nggallery\/image\/report-ds-raw?p=71'>\n                    Next                    &#9658;\n                <\/a>\n            <\/div>\n\n            <div class='counter'>\n                Picture                1                of                1            <\/div>\n\n            <div class='ngg-imagebrowser-desc'>\n                <p> <\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What about a Report about your VM growth per Cluster? The only thing we use is Excel, PowerCLI and HTML-Reports. I\u00a0show you how to build that.<\/p>\n","protected":false},"author":1,"featured_media":72,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4,5,7],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powercli","category-reports","category-vsphere"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=71"}],"version-history":[{"count":24,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":501,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions\/501"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=\/wp\/v2\/media\/72"}],"wp:attachment":[{"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vblog.hochsticher.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}