Hi All, I'm using the below script to collect some usefull information which is based on vCenter/ESXi, I need assistance to get iLO information
$StartTime = Get-Date
if (-not (Test-Path '.\vCollect-Reports')) { New-Item -Path '.\vCollect-Reports' -ItemType Directory -Force | Out-Null }
$report= "..\vCollect-Reports"
$dateF = Get-Date -UFormat "%d-%b-%Y_%H-%M-%S"
function check-Module ($m) {
# If module is imported say that and do nothing
if (Get-Module | Where-Object {$_.Name -eq $m}) {
write-host "Module $m " -f Magenta -NoNewLine
write-host "is already imported." -f Green
} else {
# If module is not imported, but available on disk then import
Write-Warning "Module $m is NOT imported (must be installed before starting)."
if (Get-Module -ListAvailable | Where-Object {$_.Name -eq $m}) {
Import-Module $m -Verbose
} else {
# If module is not imported, not available on disk, but is in online gallery then install and import
if (Find-Module -Name $m | Where-Object {$_.Name -eq $m}) {
Install-Module -Name $m -Force -Verbose -Scope CurrentUser
Import-Module $m -Verbose
} else {
# If module is not imported, not available and not in online gallery then abort
Write-Warning "Module $m not imported, not available and not in online gallery, exiting."
EXIT 1
}
}
}
}
check-Module "CredentialManager"
check-Module "VMware.PowerCLI"
function vcollect-check-folder ($dir) {
if(!(Test-Path -Path $report\$dir )){
New-Item -ItemType directory -Path $report\$dir
Write-Host "New Storage folder created" -f Magenta
New-Item -Path $report\$dir -Name $dateF -ItemType "directory"
Write-Host "New Work folder created" -f Magenta
}
else{
Write-Host "Storage Folder already exists" -f Green
New-Item -Path $report\$dir -Name $dateF -ItemType "directory"
Write-Host "New Work folder created" -f Magenta
}
}
vcollect-check-folder "vCollect-Hardware"
$vCenterList = Get-Content "..\vCenter.txt"
$username = Read-Host 'Enter The vCenter Username'
$password = Read-Host 'Enter The vCenter Password' -AsSecureString
$vccredential = New-Object System.Management.Automation.PSCredential ($username, $password)
$ReportInfo="Hardware Info Report"
$countvc = 0
$CountHosts = 0
$TotalVcCount = $vCenterList.count
Write-Host "There are $TotalVcCount vCenter" -Foregroundcolor "Cyan"
$PathH = "$report\vCollect-Hardware\$dateF"
$DCReport = @()
# XLSX Reports
$ReportXlsVC = "_fileName_VM_" + (Get-Date -UFormat "%d-%b-%Y-%H-%M") +".xlsx"
$ReportXls = "vCollect_All_ESXi_Hardware_Report_ByVC_" + (Get-Date -UFormat "%d-%b-%Y-%H-%M") +".xlsx"
# CVS Reports
$ReportCSV = "_vCollect_Hardware_Info_ByESXi_" + (Get-Date -UFormat "%d-%b-%Y-%H-%M") + ".csv"
$ReportCsvAll = "vCollect_All_ESXi_Hardware_Report_ByVC_" + (Get-Date -UFormat "%d-%b-%Y-%H-%M") + ".csv"
Disconnect-VIServer -Force -confirm:$false -ErrorAction SilentlyContinue -WarningAction 0 | Out-Null
foreach ($vCenter in $vCenterList){
$countvc++
Write-Host "Connecting to $vCenter..." -Foregroundcolor "Yellow" -NoNewLine
$connection = Connect-VIServer -Server $vCenter -Cred $vccredential -ErrorAction SilentlyContinue -WarningAction 0 | Out-Null
If($? -Eq $True){
Write-Host "Connected" -Foregroundcolor "Green"
Write-Progress -Activity "vCollecting vCenter" -Status ("vCenter: {0}" -f $vCenter) -PercentComplete ($countvc/$TotalVcCount*100) -Id 0
# Total number of hosts
$TotalVMHosts = Get-VMHost
$TotalVMHostsCount = $TotalVMHosts.count
$CountHosts = $CountHosts + $TotalVMHostsCount
Write-Host "There are $TotalVMHostsCount Hosts in $DefaultVIServer" -Foregroundcolor "Cyan"
Write-Host "Gathering ESXi Hardware Information"
$Report = @()
$vmHosts = get-vmhost | select Name,ConnectionState,PowerState,NumCpu,MemoryUsageGB,MemoryTotalGB,Version,Build,MaxEVCMode,@{N="BiosVersion";E={$_.ExtensionData.Hardware.BiosInfo.BiosVersion}}, @{N="BiosReleaseDate";E={$_.ExtensionData.Hardware.BiosInfo.ReleaseDate}},@{N="Cluster";E={ $_.Parent}},@{N="vCenter";E={ ($_.uid).split("@")[1].split(":")[0]}}
$i=0
foreach ($vmHost in $vmHosts) {
Write-Progress -Activity "vCollecting hosts" -Status ("Host: {0}" -f $vmHost.Name) -PercentComplete ($i/$TotalVMHostsCount*100) -Id 1 -ParentId 0
$ConnectionState = $vmHost.ConnectionState
if ($ConnectionState -eq 'NotResponding'){
$ESXiInfo = New-Object PSObject
$ESXiInfo | add-member -MemberType NoteProperty -Name "vCenter" -Value $vmHost.vcenter
$ESXiInfo | add-member -MemberType NoteProperty -Name "Cluster" -Value $vmHost.Cluster
$ESXiInfo | add-member -MemberType NoteProperty -Name "Name" -Value $vmHost.name
$ESXiInfo | add-member -MemberType NoteProperty -Name "Version" -Value $vmHost.Version
$ESXiInfo | add-member -MemberType NoteProperty -Name "Hardware Vendor" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "Hardware Model" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "Serial Number" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "BIOS Version" -Value $vmHost.BiosVersion
$ESXiInfo | add-member -MemberType NoteProperty -Name "BIOS Release Date" -Value $vmHost.BiosReleaseDate
$ESXiInfo | add-member -MemberType NoteProperty -Name "Build" -Value $vmHost.Build
$ESXiInfo | add-member -MemberType NoteProperty -Name "Max EVC Mode" -Value $vmHost.MaxEVCMode
$ESXiInfo | add-member -MemberType NoteProperty -Name "Num CPU" -Value $vmHost.NumCpu
$ESXiInfo | add-member -MemberType NoteProperty -Name "CPU Model" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "CPU Core Count Total" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "Memory Usage (GB)" -Value "Unknown"
$ESXiInfo | add-member -MemberType NoteProperty -Name "Memory Total (GB)" -Value $vmHost.MemoryTotalGB
$ESXiInfo | add-member -MemberType NoteProperty -Name "Connection State" -Value $vmHost.ConnectionState
$ESXiInfo | add-member -MemberType NoteProperty -Name "Power State" -Value $vmHost.PowerState
}
else {
$VMHardwareInfo = get-vmhosthardware -vmhost $vmHost.name |select Manufacturer, Model, SerialNumber,CpuModel, CpuCoreCountTotal
$ESXiInfo = New-Object PSObject
$ESXiInfo | add-member -MemberType NoteProperty -Name "vCenter" -Value $vmHost.vcenter
$ESXiInfo | add-member -MemberType NoteProperty -Name "Cluster" -Value $vmHost.Cluster
$ESXiInfo | add-member -MemberType NoteProperty -Name "Name" -Value $vmHost.name
$ESXiInfo | add-member -MemberType NoteProperty -Name "Version" -Value $vmHost.Version
$ESXiInfo | add-member -MemberType NoteProperty -Name "Hardware Vendor" -Value $VMHardwareInfo.Manufacturer
$ESXiInfo | add-member -MemberType NoteProperty -Name "Hardware Model" -Value $VMHardwareInfo.Model
$ESXiInfo | add-member -MemberType NoteProperty -Name "Serial Number" -Value $VMHardwareInfo.SerialNumber
$ESXiInfo | add-member -MemberType NoteProperty -Name "BIOS Version" -Value $vmHost.BiosVersion
$ESXiInfo | add-member -MemberType NoteProperty -Name "BIOS Release Date" -Value $vmHost.BiosReleaseDate
$ESXiInfo | add-member -MemberType NoteProperty -Name "Build" -Value $vmHost.Build
$ESXiInfo | add-member -MemberType NoteProperty -Name "Max EVC Mode" -Value $vmHost.MaxEVCMode
$ESXiInfo | add-member -MemberType NoteProperty -Name "Num CPU" -Value $vmHost.NumCpu
$ESXiInfo | add-member -MemberType NoteProperty -Name "CPU Model" -Value $VMHardwareInfo.CpuModel
$ESXiInfo | add-member -MemberType NoteProperty -Name "CPU Core Count Total" -Value $VMHardwareInfo.CpuCoreCountTotal
$ESXiInfo | add-member -MemberType NoteProperty -Name "Memory Usage (GB)" -Value $vmHost.MemoryUsageGB
$ESXiInfo | add-member -MemberType NoteProperty -Name "Memory Total (GB)" -Value $vmHost.MemoryTotalGB
$ESXiInfo | add-member -MemberType NoteProperty -Name "Connection State" -Value $vmHost.ConnectionState
$ESXiInfo | add-member -MemberType NoteProperty -Name "Power State" -Value $vmHost.PowerState
}
$report += $ESXiInfo
} # END foreach
Write-Host "Export $ReportInfo from vcenter: $vCenter" -Foregroundcolor "Green"
$Report | Export-Csv $PathH\$vCenter$ReportCSV -NoTypeInformation -UseCulture
$Report | Export-Excel -Path $PathH\$ReportXls -WorkSheetname "$vCenter"
#Invoke-Item $PathS\$vCenter$ReportCSV
$DCReport +=$Report
} # END If
Else{
Write-Host "Error in Connecting to $vCenter; Try Again with correct user name & password!" -Foregroundcolor "Red"
}
Write-Host "Export All $ReportInfo from All vCenter" -Foregroundcolor "Green"
$DCReport | Export-Csv $PathH\$ReportCsvAll -NoTypeInformation -UseCulture
$DCReport | Export-Excel -Path $PathH\$ReportXls -WorkSheetname "All vCenter"
Write-Host "Disconnect to $vCenter..." -Foregroundcolor "Yellow" -NoNewLine
$disconnection =Disconnect-VIServer -Server $vCenter -Force -confirm:$false -ErrorAction SilentlyContinue -WarningAction 0 | Out-Null
If($? -Eq $True){
Write-Host "Disconnected" -Foregroundcolor "Green"
Write-Host "#####################################" -Foregroundcolor "Blue"
}
Else{
Write-Host "Error in Disconnecting to $vCenter" -Foregroundcolor "Red"
}
}
#Invoke-Item $PathH \$ReportXls
$EndTime = Get-Date
$duration = [math]::Round((New-TimeSpan -Start $StartTime -End $EndTime).TotalMinutes,2)
Write-Host "================================"
Write-Host "vCollect Harware Info By ESXi By vCenter Completed!"
Write-Host "There are $CountHosts Hosts in $TotalVcCount vCenter" -Foregroundcolor "Cyan"
Write-Host "StartTime: $StartTime"
Write-Host " EndTime: $EndTime"
Write-Host " Duration: $duration minutes"
Write-Host "================================"
I'm not really sure what the PowerCLI question of this thread is.
Are you using the HPEiLOCmdlets module?
Did you check the HPE Community Home?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I'm using HPEiLOCmdlets module
I'm checking also HPE community Home for further information
Hi LucD, could you please assist on this?
Sorry, I have no HPE HW.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
@SCharchouf when you copy contents, please consider adding a reference to the source https://developer.vmware.com/samples/5175/vcollect-hardware-information--by-esxi-for-each-vcenter?h=...
thanks
W