├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── change_request.yml │ └── bug_report.yml ├── workflows │ ├── PSScriptAnalyzerSettings.psd1 │ ├── PSScriptAnalyzer.yml │ └── Release.yml ├── FUNDING.yml └── PULL_REQUEST_TEMPLATE.md ├── AsBuiltReport.VMware.vSphere.json ├── Samples ├── Sample_vSphere_Report_1.png ├── Sample_vSphere_Report_2.png └── Sample vSphere As-Built Report.html ├── Src └── Private │ ├── Get-InstallDate.ps1 │ ├── Get-vCenterStats.ps1 │ ├── Get-Uptime.ps1 │ ├── Convert-DataSize.ps1 │ ├── Get-ScsiDeviceDetail.ps1 │ ├── Get-ESXiBootDevice.ps1 │ ├── Get-PciDeviceDetail.ps1 │ ├── Get-VMHostNetworkAdapterDP.ps1 │ └── Get-License.ps1 ├── AsBuiltReport.VMware.vSphere.psm1 ├── .vscode └── settings.json ├── LICENSE ├── AsBuiltReport.VMware.vSphere.psd1 ├── CHANGELOG.md └── README.md /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false -------------------------------------------------------------------------------- /AsBuiltReport.VMware.vSphere.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/HEAD/AsBuiltReport.VMware.vSphere.json -------------------------------------------------------------------------------- /Samples/Sample_vSphere_Report_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/HEAD/Samples/Sample_vSphere_Report_1.png -------------------------------------------------------------------------------- /Samples/Sample_vSphere_Report_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/HEAD/Samples/Sample_vSphere_Report_2.png -------------------------------------------------------------------------------- /.github/workflows/PSScriptAnalyzerSettings.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | ExcludeRules = @( 3 | 'PSUseToExportFieldsInManifest', 4 | 'PSReviewUnusedParameter', 5 | 'PSUseDeclaredVarsMoreThanAssignments', 6 | 'PSAvoidGlobalVars' 7 | ) 8 | } -------------------------------------------------------------------------------- /Src/Private/Get-InstallDate.ps1: -------------------------------------------------------------------------------- 1 | function Get-InstallDate { 2 | $esxcli = Get-EsxCli -VMHost $VMHost -V2 -Server $vCenter 3 | $thisUUID = $esxcli.system.uuid.get.Invoke() 4 | $decDate = [Convert]::ToInt32($thisUUID.Split("-")[0], 16) 5 | $installDate = [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($decDate)) 6 | [PSCustomObject][Ordered]@{ 7 | Name = $VMHost.Name 8 | InstallDate = $installDate 9 | } 10 | } -------------------------------------------------------------------------------- /.github/workflows/PSScriptAnalyzer.yml: -------------------------------------------------------------------------------- 1 | name: PSScriptAnalyzer 2 | on: [push, pull_request] 3 | jobs: 4 | lint: 5 | name: Run PSScriptAnalyzer 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v5 9 | - name: lint 10 | uses: devblackops/github-action-psscriptanalyzer@master 11 | with: 12 | sendComment: true 13 | failOnErrors: true 14 | failOnWarnings: false 15 | failOnInfos: false 16 | repoToken: ${{ secrets.GITHUB_TOKEN }} 17 | settingsPath: .github/workflows/PSScriptAnalyzerSettings.psd1 -------------------------------------------------------------------------------- /AsBuiltReport.VMware.vSphere.psm1: -------------------------------------------------------------------------------- 1 | # Get public and private function definition files and dot source them 2 | $Public = @(Get-ChildItem -Path $PSScriptRoot\Src\Public\*.ps1 -ErrorAction SilentlyContinue) 3 | $Private = @(Get-ChildItem -Path $PSScriptRoot\Src\Private\*.ps1 -ErrorAction SilentlyContinue) 4 | 5 | foreach ($Module in @($Public + $Private)) { 6 | try { 7 | . $Module.FullName 8 | } catch { 9 | Write-Error -Message "Failed to import function $($Module.FullName): $_" 10 | } 11 | } 12 | 13 | Export-ModuleMember -Function $Public.BaseName 14 | Export-ModuleMember -Function $Private.BaseName -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | #github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | #patreon: # Replace with a single Patreon username 5 | #open_collective: # Replace with a single Open Collective username 6 | ko_fi: B0B7DDGZ7 7 | #tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | #community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | #liberapay: # Replace with a single Liberapay username 10 | #issuehunt: # Replace with a single IssueHunt username 11 | #lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | #polar: # Replace with a single Polar username 13 | #buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | #thanks_dev: # Replace with a single thanks.dev username 15 | #custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "powershell.codeFormatting.preset": "Custom", 3 | "powershell.codeFormatting.whitespaceBeforeOpenBrace": true, 4 | "powershell.codeFormatting.whitespaceBeforeOpenParen": true, 5 | "powershell.codeFormatting.whitespaceAroundOperator": true, 6 | "powershell.codeFormatting.whitespaceAfterSeparator": true, 7 | "powershell.codeFormatting.ignoreOneLineBlock": true, 8 | "powershell.codeFormatting.newLineAfterCloseBrace": false, 9 | "powershell.codeFormatting.newLineAfterOpenBrace": true, 10 | "powershell.codeFormatting.openBraceOnSameLine": true, 11 | "powershell.codeFolding.enable": true, 12 | "powershell.codeFormatting.alignPropertyValuePairs": false, 13 | "powershell.bugReporting.project": "https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/", 14 | "editor.tabSize": 4, 15 | "editor.insertSpaces": true, 16 | "editor.detectIndentation": false, 17 | "editor.rulers": [ 18 | 115 19 | ] 20 | } -------------------------------------------------------------------------------- /Src/Private/Get-vCenterStats.ps1: -------------------------------------------------------------------------------- 1 | function Get-vCenterStats { 2 | $vCenterStats = @() 3 | $ServiceInstance = Get-View ServiceInstance -Server $vCenter 4 | $VCenterStatistics = Get-View ($ServiceInstance).Content.PerfManager 5 | [int] $CurrentServiceIndex = 2; 6 | Foreach ($xStatLevel in $VCenterStatistics.HistoricalInterval) { 7 | Switch ($xStatLevel.SamplingPeriod) { 8 | 300 { $xInterval = '5 Minutes' } 9 | 1800 { $xInterval = '30 Minutes' } 10 | 7200 { $xInterval = '2 Hours' } 11 | 86400 { $xInterval = '1 Day' } 12 | } 13 | ## Add the required key/values to the hashtable 14 | $vCenterStatsHash = @{ 15 | IntervalDuration = $xInterval; 16 | IntervalEnabled = $xStatLevel.Enabled; 17 | SaveDuration = $xStatLevel.Name; 18 | StatsLevel = $xStatLevel.Level; 19 | } 20 | ## Add the hash to the array 21 | $vCenterStats += $vCenterStatsHash; 22 | $CurrentServiceIndex++ 23 | } 24 | Write-Output $vCenterStats 25 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 AsBuiltReport 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Src/Private/Get-Uptime.ps1: -------------------------------------------------------------------------------- 1 | function Get-Uptime { 2 | [CmdletBinding()][OutputType('System.Management.Automation.PSObject')] 3 | Param ( 4 | [Parameter(Mandatory = $false, ValueFromPipeline = $false)] 5 | [ValidateNotNullOrEmpty()] 6 | [PSObject]$VMHost, [PSObject]$VM 7 | ) 8 | $UptimeObject = @() 9 | $Date = (Get-Date).ToUniversalTime() 10 | If ($VMHost) { 11 | $UptimeObject = Get-View -ViewType hostsystem -Property Name, Runtime.BootTime -Filter @{ 12 | "Name" = "^$($VMHost.Name)$" 13 | "Runtime.ConnectionState" = "connected" 14 | } | Select-Object Name, @{L = 'UptimeDays'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalDays), 2) } }, @{L = 'UptimeHours'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalHours), 2) } }, @{L = 'UptimeMinutes'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalMinutes), 2) } } 15 | } 16 | 17 | if ($VM) { 18 | $UptimeObject = Get-View -ViewType VirtualMachine -Property Name, Runtime.BootTime -Filter @{ 19 | "Name" = "^$($VM.Name)$" 20 | "Runtime.PowerState" = "poweredOn" 21 | } | Select-Object Name, @{L = 'UptimeDays'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalDays), 2) } }, @{L = 'UptimeHours'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalHours), 2) } }, @{L = 'UptimeMinutes'; E = { [math]::round(((($Date) - ($_.Runtime.BootTime)).TotalMinutes), 2) } } 22 | } 23 | Write-Output $UptimeObject 24 | } -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Description 4 | 5 | 6 | ## Related Issue 7 | 8 | 9 | 10 | 11 | 12 | ## Motivation and Context 13 | 14 | 15 | ## How Has This Been Tested? 16 | 17 | 18 | 19 | 20 | ## Screenshots (if appropriate): 21 | 22 | ## Types of changes 23 | 24 | - [ ] Bug fix (non-breaking change which fixes an issue) 25 | - [ ] New feature (non-breaking change which adds functionality) 26 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 27 | 28 | ## Checklist: 29 | 30 | 31 | - [ ] My code follows the code style of this project. 32 | - [ ] My change requires a change to the documentation. 33 | - [ ] I have updated the documentation accordingly. 34 | - [ ] I have read the [**CONTRIBUTING**](https://www.asbuiltreport.com/about/contributing/) document. 35 | -------------------------------------------------------------------------------- /Src/Private/Convert-DataSize.ps1: -------------------------------------------------------------------------------- 1 | function Convert-DataSize { 2 | param ( 3 | [double]$Size, 4 | [ValidateSet("KB", "MB", "GB", "TB", "PB")] 5 | [string]$InputUnit = "GB", 6 | [ValidateSet("KB", "MB", "GB", "TB", "PB")] 7 | [string]$OutputUnit, 8 | [int]$RoundUnits = 2 9 | ) 10 | 11 | switch ($InputUnit) { 12 | "KB" { $SizeInBytes = $Size * 1024 } 13 | "MB" { $SizeInBytes = $Size * 1024 * 1024 } 14 | "GB" { $SizeInBytes = $Size * 1024 * 1024 * 1024 } 15 | "TB" { $SizeInBytes = $Size * 1024 * 1024 * 1024 * 1024 } 16 | "PB" { $SizeInBytes = $Size * 1024 * 1024 * 1024 * 1024 * 1024 } 17 | } 18 | 19 | if (-not $OutputUnit) { 20 | if ($SizeInBytes -ge [math]::Pow(1024, 5)) { 21 | $OutputUnit = "PB" 22 | } elseif ($SizeInBytes -ge [math]::Pow(1024, 4)) { 23 | $OutputUnit = "TB" 24 | } elseif ($SizeInBytes -ge [math]::Pow(1024, 3)) { 25 | $OutputUnit = "GB" 26 | } elseif ($SizeInBytes -ge [math]::Pow(1024, 2)) { 27 | $OutputUnit = "MB" 28 | } elseif ($SizeInBytes -ge [math]::Pow(1024, 1)) { 29 | $OutputUnit = "KB" 30 | } else { 31 | $OutputUnit = "GB" 32 | } 33 | } 34 | 35 | switch ($OutputUnit) { 36 | "KB" { $OutputSize = $SizeInBytes / 1024 } 37 | "MB" { $OutputSize = $SizeInBytes / (1024 * 1024) } 38 | "GB" { $OutputSize = $SizeInBytes / (1024 * 1024 * 1024) } 39 | "TB" { $OutputSize = $SizeInBytes / (1024 * 1024 * 1024 * 1024) } 40 | "PB" { $OutputSize = $SizeInBytes / (1024 * 1024 * 1024 * 1024 * 1024) } 41 | } 42 | 43 | return "{0:N$RoundUnits} $OutputUnit" -f $OutputSize 44 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/change_request.yml: -------------------------------------------------------------------------------- 1 | name: Change Request 2 | description: Request a new change or an improvement 3 | labels: ["change request"] 4 | assignees: 5 | - tpcarman 6 | body: 7 | - type: textarea 8 | id: description 9 | attributes: 10 | label: Description 11 | description: >- 12 | Please provide a detailed description of your idea so that the project maintainers and contributors can fully understand what change, feature, or improvement you are proposing. 13 | validations: 14 | required: true 15 | - type: textarea 16 | id: additional-context 17 | attributes: 18 | label: Additional Context 19 | description: This field is optional. You may provide additional context for the idea you wish to propose. You may wish to include links to any related [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues) or other relevant information. 20 | - type: checkboxes 21 | id: checklist 22 | attributes: 23 | label: Before submitting 24 | description: >- 25 | Please ensure your change request fulfills all of the following requirements. 26 | If you are unsure of what a specific requirement means, please follow the links to learn about it and understand why it is necessary before submitting. 27 | options: 28 | - label: >- 29 | I have read [the documentation](https://www.asbuiltreport.com/user-guide/new-asbuiltconfig), 30 | and referred to the [known issues](https://www.asbuiltreport.com/support/known-issues) before submitting this change request. 31 | required: true 32 | - label: >- 33 | I have checked for previously opened & closed [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues) before submitting this change request. 34 | required: true 35 | -------------------------------------------------------------------------------- /.github/workflows/Release.yml: -------------------------------------------------------------------------------- 1 | name: Publish PowerShell Module 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | publish-to-gallery: 9 | runs-on: windows-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: Set PSRepository to Trusted for PowerShell Gallery 13 | shell: pwsh 14 | run: | 15 | Set-PSRepository -Name PSGallery -InstallationPolicy Trusted 16 | - name: Install AsBuiltReport.Core module 17 | shell: pwsh 18 | run: | 19 | Install-Module -Name AsBuiltReport.Core -Repository PSGallery -Force 20 | - name: Test Module Manifest 21 | shell: pwsh 22 | run: | 23 | Test-ModuleManifest .\AsBuiltReport.VMware.vSphere.psd1 24 | - name: Publish module to PowerShell Gallery 25 | shell: pwsh 26 | run: | 27 | Publish-Module -Path ./ -NuGetApiKey ${{ secrets.PSGALLERY_API_KEY }} -Verbose 28 | tweet: 29 | needs: publish-to-gallery 30 | runs-on: ubuntu-latest 31 | steps: 32 | - uses: Eomm/why-don-t-you-tweet@v2 33 | # We don't want to tweet if the repository is not a public one 34 | if: ${{ !github.event.repository.private }} 35 | with: 36 | # GitHub event payload 37 | # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release 38 | tweet-message: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #VMware #vSphere #AsBuiltReport #vExpert" 39 | env: 40 | TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }} 41 | TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} 42 | TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} 43 | TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} 44 | bsky-post: 45 | needs: publish-to-gallery 46 | runs-on: ubuntu-latest 47 | steps: 48 | - uses: zentered/bluesky-post-action@v0.2.0 49 | with: 50 | post: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #VMware #vSphere #AsBuiltReport #vExpert" 51 | env: 52 | BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }} 53 | BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }} -------------------------------------------------------------------------------- /Src/Private/Get-ScsiDeviceDetail.ps1: -------------------------------------------------------------------------------- 1 | function Get-ScsiDeviceDetail { 2 | <# 3 | .SYNOPSIS 4 | Helper function to return Scsi device information for a specific host and a specific datastore. 5 | .PARAMETER VMHosts 6 | This parameter accepts a list of host objects returned from the Get-VMHost cmdlet 7 | .PARAMETER VMHostMoRef 8 | This parameter specifies, by MoRef Id, the specific host of interest from with the $VMHosts array. 9 | .PARAMETER DatastoreDiskName 10 | This parameter specifies, by disk name, the specific datastore of interest. 11 | .EXAMPLE 12 | $VMHosts = Get-VMHost 13 | Get-ScsiDeviceDetail -AllVMHosts $VMHosts -VMHostMoRef 'HostSystem-host-131' -DatastoreDiskName 'naa.6005076801810082480000000001d9fe' 14 | DisplayName : IBM Fibre Channel Disk (naa.6005076801810082480000000001d9fe) 15 | Ssd : False 16 | LocalDisk : False 17 | CanonicalName : naa.6005076801810082480000000001d9fe 18 | Vendor : IBM 19 | Model : 2145 20 | Multipath Policy : Round Robin 21 | CapacityGB : 512 22 | .NOTES 23 | Author: Ryan Kowalewski 24 | #> 25 | 26 | [CmdLetBinding()] 27 | param ( 28 | [Parameter(Mandatory = $true)] 29 | $VMHosts, 30 | [Parameter(Mandatory = $true)] 31 | $VMHostMoRef, 32 | [Parameter(Mandatory = $true)] 33 | $DatastoreDiskName 34 | ) 35 | 36 | $VMHostObj = $VMHosts | Where-Object { $_.Id -eq $VMHostMoRef } 37 | $ScsiDisk = $VMHostObj.ExtensionData.Config.StorageDevice.ScsiLun | Where-Object { 38 | $_.CanonicalName -eq $DatastoreDiskName 39 | } 40 | $Multipath = $VMHostObj.ExtensionData.Config.StorageDevice.MultipathInfo.Lun | Where-Object { 41 | $_.Lun -eq $ScsiDisk.Key 42 | } 43 | $CapacityGB = [math]::Round((($ScsiDisk.Capacity.BlockSize * $ScsiDisk.Capacity.Block) / 1024 / 1024 / 1024), 2) 44 | 45 | [PSCustomObject]@{ 46 | 'DisplayName' = $ScsiDisk.DisplayName 47 | 'Ssd' = $ScsiDisk.Ssd 48 | 'LocalDisk' = $ScsiDisk.LocalDisk 49 | 'CanonicalName' = $ScsiDisk.CanonicalName 50 | 'Vendor' = $ScsiDisk.Vendor 51 | 'Model' = $ScsiDisk.Model 52 | 'MultipathPolicy' = switch ($Multipath.Policy.Policy) { 53 | 'VMW_PSP_RR' { 'Round Robin' } 54 | 'VMW_PSP_FIXED' { 'Fixed' } 55 | 'VMW_PSP_MRU' { 'Most Recently Used' } 56 | default { $Multipath.Policy.Policy } 57 | } 58 | 'Paths' = ($Multipath.Path).Count 59 | 'CapacityGB' = $CapacityGB 60 | } 61 | } -------------------------------------------------------------------------------- /Src/Private/Get-ESXiBootDevice.ps1: -------------------------------------------------------------------------------- 1 | function Get-ESXiBootDevice { 2 | <# 3 | .NOTES 4 | =========================================================================== 5 | Created by: William Lam 6 | Organization: VMware 7 | Blog: www.virtuallyghetto.com 8 | Twitter: @lamw 9 | =========================================================================== 10 | .DESCRIPTION 11 | This function identifies how an ESXi host was booted up along with its boot 12 | device (if applicable). This supports both local installation to Auto Deploy as 13 | well as Boot from SAN. 14 | .PARAMETER VMHostname 15 | The name of an individual ESXi host managed by vCenter Server 16 | .EXAMPLE 17 | Get-ESXiBootDevice 18 | .EXAMPLE 19 | Get-ESXiBootDevice -VMHost esxi-01 20 | #> 21 | param( 22 | [Parameter(Mandatory = $false)][PSObject]$VMHost 23 | ) 24 | 25 | $results = @() 26 | $esxcli = Get-EsxCli -V2 -VMHost $VMHost -Server $vCenter 27 | $bootDetails = $esxcli.system.boot.device.get.Invoke() 28 | 29 | # Check to see if ESXi booted over the network 30 | $networkBoot = $false 31 | if ($bootDetails.BootNIC) { 32 | $networkBoot = $true 33 | $bootDevice = $bootDetails.BootNIC 34 | } elseif ($bootDetails.StatelessBootNIC) { 35 | $networkBoot = $true 36 | $bootDevice = $bootDetails.StatelessBootNIC 37 | } 38 | 39 | # If ESXi booted over network, check to see if deployment 40 | # is Stateless, Stateless w/Caching or Stateful 41 | if ($networkBoot) { 42 | $option = $esxcli.system.settings.advanced.list.CreateArgs() 43 | $option.option = "/UserVars/ImageCachedSystem" 44 | try { 45 | $optionValue = $esxcli.system.settings.advanced.list.Invoke($option) 46 | } catch { 47 | $bootType = "Stateless" 48 | } 49 | $bootType = $optionValue.StringValue 50 | } 51 | 52 | # Loop through all storage devices to identify boot device 53 | $devices = $esxcli.storage.core.device.list.Invoke() 54 | $foundBootDevice = $false 55 | foreach ($device in $devices) { 56 | if ($device.IsBootDevice -eq $true) { 57 | $foundBootDevice = $true 58 | 59 | if ($device.IsLocal -eq $true -and $networkBoot -and $bootType -ne "Stateful") { 60 | $bootType = "Stateless Caching" 61 | } elseif ($device.IsLocal -eq $true -and $networkBoot -eq $false) { 62 | $bootType = "Local" 63 | } elseif ($device.IsLocal -eq $false -and $networkBoot -eq $false) { 64 | $bootType = "Remote" 65 | } 66 | 67 | $bootDevice = $device.Device 68 | $bootModel = $device.Model 69 | $bootVendor = $device.VEndor 70 | $bootSize = $device.Size 71 | $bootIsSAS = $TextInfo.ToTitleCase($device.IsSAS) 72 | $bootIsSSD = $TextInfo.ToTitleCase($device.IsSSD) 73 | $bootIsUSB = $TextInfo.ToTitleCase($device.IsUSB) 74 | } 75 | } 76 | 77 | # Pure Stateless (e.g. No USB or Disk for boot) 78 | if ($networkBoot -and $foundBootDevice -eq $false) { 79 | $bootModel = "N/A" 80 | $bootVendor = "N/A" 81 | $bootSize = "N/A" 82 | $bootIsSAS = "N/A" 83 | $bootIsSSD = "N/A" 84 | $bootIsUSB = "N/A" 85 | } 86 | 87 | $tmp = [PSCustomObject]@{ 88 | Host = $vmhost.Name; 89 | Device = $bootDevice; 90 | BootType = $bootType; 91 | Vendor = $bootVendor; 92 | Model = $bootModel; 93 | SizeMB = $bootSize; 94 | IsSAS = $bootIsSAS; 95 | IsSSD = $bootIsSSD; 96 | IsUSB = $bootIsUSB; 97 | } 98 | $results += $tmp 99 | $results 100 | } -------------------------------------------------------------------------------- /Src/Private/Get-PciDeviceDetail.ps1: -------------------------------------------------------------------------------- 1 | Function Get-PciDeviceDetail { 2 | <# 3 | .SYNOPSIS 4 | Helper function to return PCI Devices Drivers & Firmware information for a specific host. 5 | .PARAMETER Server 6 | vCenter VISession object. 7 | .PARAMETER esxcli 8 | Esxcli session object associated to the host. 9 | .EXAMPLE 10 | $Credentials = Get-Credential 11 | $Server = Connect-VIServer -Server vcenter01.example.com -Credentials $Credentials 12 | $VMHost = Get-VMHost -Server $Server -Name esx01.example.com 13 | $esxcli = Get-EsxCli -Server $Server -VMHost $VMHost -V2 14 | Get-PciDeviceDetail -Server $vCenter -esxcli $esxcli 15 | Device : vmhba0 16 | Model : Sunrise Point-LP AHCI Controller 17 | Driver : vmw_ahci 18 | Driver Version : 1.0.0-34vmw.650.0.14.5146846 19 | Firmware Version : N/A 20 | VIB Name : vmw-ahci 21 | VIB Version : 1.0.0-34vmw.650.0.14.5146846 22 | .NOTES 23 | Author: Erwan Quelin heavily based on the work of the vDocumentation team - https://github.com/arielsanchezmora/vDocumentation/blob/master/powershell/vDocumentation/Public/Get-ESXIODevice.ps1 24 | #> 25 | [CmdletBinding()] 26 | Param ( 27 | [Parameter(Mandatory = $true)] 28 | $Server, 29 | [Parameter(Mandatory = $true)] 30 | $esxcli 31 | ) 32 | Begin { } 33 | 34 | Process { 35 | # Set default results 36 | $firmwareVersion = "N/A" 37 | $vibName = "N/A" 38 | $driverVib = @{ 39 | Name = "N/A" 40 | Version = "N/A" 41 | } 42 | $pciDevices = $esxcli.hardware.pci.list.Invoke() | Where-Object { $_.VMkernelName -match 'vmhba|vmnic|vmgfx' -and $_.ModuleName -ne 'None'} | Sort-Object -Property VMkernelName 43 | $nicList = $esxcli.network.nic.list.Invoke() | Sort-Object Name 44 | foreach ($pciDevice in $pciDevices) { 45 | $driverVersion = $esxcli.system.module.get.Invoke(@{module = $pciDevice.ModuleName }) | Select-Object -ExpandProperty Version 46 | # Get NIC Firmware version 47 | if (($pciDevice.VMkernelName -like 'vmnic*') -and ($nicList.Name -contains $pciDevice.VMkernelName) ) { 48 | $vmnicDetail = $esxcli.network.nic.get.Invoke(@{nicname = $pciDevice.VMkernelName }) 49 | $firmwareVersion = $vmnicDetail.DriverInfo.FirmwareVersion 50 | # Get NIC driver VIB package version 51 | $driverVib = $esxcli.software.vib.list.Invoke() | Select-Object -Property Name, Version | Where-Object { $_.Name -eq $vmnicDetail.DriverInfo.Driver -or $_.Name -eq "net-" + $vmnicDetail.DriverInfo.Driver -or $_.Name -eq "net55-" + $vmnicDetail.DriverInfo.Driver } 52 | <# 53 | If HP Smart Array vmhba* (scsi-hpsa driver) then get Firmware version 54 | else skip if VMkernnel is vmhba*. Can't get HBA Firmware from 55 | Powercli at the moment only through SSH or using Putty Plink+PowerCli. 56 | #> 57 | } elseif ($pciDevice.VMkernelName -like 'vmhba*') { 58 | if ($pciDevice.DeviceName -match "smart array") { 59 | $hpsa = $vmhost.ExtensionData.Runtime.HealthSystemRuntime.SystemHealthInfo.NumericSensorInfo | Where-Object { $_.Name -match "HP Smart Array" } 60 | if ($hpsa) { 61 | $firmwareVersion = (($hpsa.Name -split "firmware")[1]).Trim() 62 | } 63 | } 64 | # Get HBA driver VIB package version 65 | $vibName = $pciDevice.ModuleName -replace "_", "-" 66 | $driverVib = $esxcli.software.vib.list.Invoke() | Select-Object -Property Name, Version | Where-Object { $_.Name -eq "scsi-" + $VibName -or $_.Name -eq "sata-" + $VibName -or $_.Name -eq $VibName } 67 | } 68 | # Output collected data 69 | [PSCustomObject]@{ 70 | 'Device' = $pciDevice.VMkernelName 71 | 'Model' = $pciDevice.DeviceName 72 | 'Driver' = $pciDevice.ModuleName 73 | 'Driver Version' = $driverVersion 74 | 'Firmware Version' = $firmwareVersion 75 | 'VIB Name' = $driverVib.Name 76 | 'VIB Version' = $driverVib.Version 77 | } 78 | } 79 | } 80 | End { } 81 | } -------------------------------------------------------------------------------- /Src/Private/Get-VMHostNetworkAdapterDP.ps1: -------------------------------------------------------------------------------- 1 | function Get-VMHostNetworkAdapterDP { 2 | <# 3 | .SYNOPSIS 4 | Function to retrieve the Network Adapter CDP or LLDP info of a vSphere host. 5 | .DESCRIPTION 6 | Function to retrieve the Network Adapter CDP or LLDP info of a vSphere host. 7 | .PARAMETER VMHost 8 | A vSphere ESXi Host object 9 | .INPUTS 10 | System.Management.Automation.PSObject. 11 | .OUTPUTS 12 | System.Management.Automation.PSObject. 13 | .EXAMPLE 14 | Get-VMHostNetworkAdapterDP -VMHost ESXi01,ESXi02 15 | .EXAMPLE 16 | Get-VMHost ESXi01,ESXi02 | Get-VMHostNetworkAdapterDP 17 | #> 18 | [CmdletBinding()][OutputType('System.Management.Automation.PSObject')] 19 | 20 | Param 21 | ( 22 | [parameter(Mandatory = $true, ValueFromPipeline = $true)] 23 | [ValidateNotNullOrEmpty()] 24 | [PSObject[]]$VMHost 25 | ) 26 | 27 | begin { 28 | $ObjOutput = @() 29 | } 30 | 31 | process { 32 | try { 33 | foreach ($ObjVMHost in $VMHost) { 34 | $ConfigManagerView = Get-View $ObjVMHost.ExtensionData.ConfigManager.NetworkSystem 35 | $pNics = $ConfigManagerView.NetworkInfo.Pnic 36 | foreach ($pNic in $pNics) { 37 | $PhysicalNicHintInfo = $ConfigManagerView.QueryNetworkHint($pNic.Device) 38 | if ($PhysicalNicHintInfo.ConnectedSwitchPort) { 39 | $Object = [PSCustomObject]@{ 40 | 'Host' = $ObjVMHost.Name 41 | 'Device' = $pNic.Device 42 | 'Status' = if ($PhysicalNicHintInfo.ConnectedSwitchPort) { 43 | 'Connected' 44 | } else { 45 | 'Disconnected' 46 | } 47 | 'SwitchId' = $PhysicalNicHintInfo.ConnectedSwitchPort.DevId 48 | 'Address' = $PhysicalNicHintInfo.ConnectedSwitchPort.Address 49 | 'VLAN' = $PhysicalNicHintInfo.ConnectedSwitchPort.Vlan 50 | 'MTU' = $PhysicalNicHintInfo.ConnectedSwitchPort.Mtu 51 | 'SystemName' = $PhysicalNicHintInfo.ConnectedSwitchPort.SystemName 52 | 'Location' = $PhysicalNicHintInfo.ConnectedSwitchPort.Location 53 | 'HardwarePlatform' = $PhysicalNicHintInfo.ConnectedSwitchPort.HardwarePlatform 54 | 'SoftwareVersion' = $PhysicalNicHintInfo.ConnectedSwitchPort.SoftwareVersion 55 | 'ManagementAddress' = $PhysicalNicHintInfo.ConnectedSwitchPort.MgmtAddr 56 | 'PortId' = $PhysicalNicHintInfo.ConnectedSwitchPort.PortId 57 | } 58 | $ObjOutput += $Object 59 | } 60 | if ($PhysicalNicHintInfo.LldpInfo) { 61 | $Object = [PSCustomObject]@{ 62 | 'Host' = $ObjVMHost.Name 63 | 'Device' = $pNic.Device 64 | 'ChassisId' = $PhysicalNicHintInfo.LldpInfo.ChassisId 65 | 'PortId' = $PhysicalNicHintInfo.LldpInfo.PortId 66 | 'TimeToLive' = $PhysicalNicHintInfo.LldpInfo.TimeToLive 67 | 'TimeOut' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "TimeOut"}).Value 68 | 'Samples' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "Samples"}).Value 69 | 'ManagementAddress' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "Management Address"}).Value 70 | 'PortDescription' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "Port Description"}).Value 71 | 'SystemDescription' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "System Description"}).Value 72 | 'SystemName' = ($PhysicalNicHintInfo.LldpInfo.Parameter | Where-Object {$_.key -eq "System Name"}).Value 73 | } 74 | $ObjOutput += $Object 75 | } 76 | } 77 | } 78 | } catch [Exception] { 79 | throw 'Unable to retrieve CDP/LLDP info' 80 | } 81 | } 82 | end { 83 | Write-Output $ObjOutput 84 | } 85 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | labels: ["bug"] 4 | assignees: 5 | - tpcarman 6 | body: 7 | - type: textarea 8 | id: bug-description 9 | attributes: 10 | label: Bug description 11 | description: >- 12 | Please provide a clear and concise description of the bug. 13 | validations: 14 | required: true 15 | - type: input 16 | id: command-line-input 17 | attributes: 18 | label: Command-line input 19 | description: >- 20 | Please provide the command line input you are using to run AsBuiltReport. Please ensure that you obscure any sensitive information. 21 | placeholder: New-AsBuiltReport -Report VMware.vSphere -Target xxxxxxx -Format Word,HTML -OutputFolderPath 'C:\Users\..\Documents' -AsBuiltConfigFilePath 'C:\Users\..\AsBuiltReport\AsBuiltReport.json' -ReportConfigFilePath 'C:\Users\..\AsBuiltReport\AsBuiltReport.VMware.vSphere.json' -EnableHealthCheck -Verbose 22 | validations: 23 | required: true 24 | - type: textarea 25 | id: steps-to-reproduce 26 | attributes: 27 | label: Steps to reproduce 28 | description: >- 29 | Please provide a detailed list of steps to reproduce the bug. 30 | placeholder: |- 31 | 1. .... 32 | 2. .... 33 | 3. .... 34 | validations: 35 | required: true 36 | - type: textarea 37 | id: expected-behaviour 38 | attributes: 39 | label: Expected behaviour 40 | description: >- 41 | Please provide a clear and concise description of what you expected to happen. 42 | validations: 43 | required: true 44 | - type: textarea 45 | id: screenshots 46 | attributes: 47 | label: Screenshots 48 | description: >- 49 | Please attach any screenshots to help explain the problem. Please ensure that you obscure any sensitive information. 50 | placeholder: |- 51 | Drag and drop screenshots here. 52 | - type: textarea 53 | id: operating-system 54 | attributes: 55 | label: Operating System 56 | description: Please provide information about the operating system are you using. 57 | placeholder: macOS Big Sur, Windows 10, Ubuntu 20.04 LTS 58 | validations: 59 | required: true 60 | - type: textarea 61 | id: powershell-version 62 | attributes: 63 | label: PowerShell Version 64 | description: Please provide information about the PowerShell version you are using. Please provide the output from the following PowerShell command `$PSVersionTable`. 65 | placeholder: $PSVersionTable 66 | validations: 67 | required: true 68 | - type: textarea 69 | id: powershell-modules 70 | attributes: 71 | label: PowerShell Modules 72 | description: Please provide information about the PowerShell modules are you using. Please provide the output from the following PowerShell command `Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.VMware.vSphere";"PScribo";"VCF.PowerCLI") | Select Name, Version` 73 | placeholder: Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.VMware.vSphere";"PScribo";"VCF.PowerCLI") | Select Name, Version 74 | validations: 75 | required: true 76 | - type: textarea 77 | id: additional-context 78 | attributes: 79 | label: Additional Context 80 | description: This field is optional. You may provide additional context for the bug you wish to report. You may wish to include links to any related [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues) or other relevant information. 81 | - type: checkboxes 82 | id: checklist 83 | attributes: 84 | label: Before submitting 85 | description: >- 86 | Please ensure your bug report fulfills all of the following requirements. 87 | If you are unsure of what a specific requirement means, please follow the links to learn about it and understand why it is necessary before submitting. 88 | options: 89 | - label: >- 90 | I have read and followed the [bug reporting guidelines](https://www.asbuiltreport.com/dev-guide/contributing/#reporting-issues-and-bugs). 91 | required: true 92 | - label: >- 93 | I have read [the documentation](https://www.asbuiltreport.com/user-guide/new-asbuiltconfig), 94 | and referred to the [known issues](https://www.asbuiltreport.com/support/known-issues) before submitting this bug report. 95 | required: true 96 | - label: >- 97 | I have checked for previously opened & closed [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues) before submitting this bug report. 98 | required: true 99 | -------------------------------------------------------------------------------- /AsBuiltReport.VMware.vSphere.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'AsBuiltReport.VMware.vSphere' 3 | # 4 | # Generated by: Tim Carman 5 | # 6 | # Generated on: 7/04/2019 7 | # 8 | 9 | @{ 10 | 11 | # Script module or binary module file associated with this manifest. 12 | RootModule = 'AsBuiltReport.VMware.vSphere.psm1' 13 | 14 | # Version number of this module. 15 | ModuleVersion = '1.3.6' 16 | 17 | # Supported PSEditions 18 | # CompatiblePSEditions = 'Desktop' 19 | 20 | # ID used to uniquely identify this module 21 | GUID = 'e1cbf1ce-cf01-4b6e-9cc2-56323da3c351' 22 | 23 | # Author of this module 24 | Author = 'Tim Carman' 25 | 26 | # Company or vendor of this module 27 | # CompanyName = '' 28 | 29 | # Copyright statement for this module 30 | Copyright = '(c) 2025 Tim Carman. All rights reserved.' 31 | 32 | # Description of the functionality provided by this module 33 | Description = 'A PowerShell module to generate an as built report on the configuration of VMware vSphere.' 34 | 35 | # Minimum version of the Windows PowerShell engine required by this module 36 | # PowerShellVersion = '5.1' 37 | 38 | # Name of the Windows PowerShell host required by this module 39 | # PowerShellHostName = '' 40 | 41 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 42 | # DotNetFrameworkVersion = '4.5' 43 | 44 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 45 | # CLRVersion = '' 46 | 47 | # Processor architecture (None, X86, Amd64) required by this module 48 | # ProcessorArchitecture = '' 49 | 50 | # Modules that must be imported into the global environment prior to importing this module 51 | RequiredModules = @( 52 | @{ 53 | ModuleName = 'AsBuiltReport.Core'; 54 | ModuleVersion = '1.4.3' 55 | } 56 | ) 57 | 58 | # Assemblies that must be loaded prior to importing this module 59 | # RequiredAssemblies = @() 60 | 61 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 62 | # ScriptsToProcess = @() 63 | 64 | # Type files (.ps1xml) to be loaded when importing this module 65 | # TypesToProcess = @() 66 | 67 | # Format files (.ps1xml) to be loaded when importing this module 68 | # FormatsToProcess = @() 69 | 70 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 71 | # NestedModules = @() 72 | 73 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 74 | FunctionsToExport = @('Invoke-AsBuiltReport.VMware.vSphere') 75 | 76 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 77 | # CmdletsToExport = @() 78 | 79 | # Variables to export from this module 80 | # VariablesToExport = @() 81 | 82 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 83 | # AliasesToExport = @() 84 | 85 | # DSC resources to export from this module 86 | # DscResourcesToExport = @() 87 | 88 | # List of all modules packaged with this module 89 | # ModuleList = @() 90 | 91 | # List of all files packaged with this module 92 | # FileList = @() 93 | 94 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 95 | PrivateData = @{ 96 | 97 | PSData = @{ 98 | # Tags applied to this module. These help with module discovery in online galleries. 99 | Tags = 'AsBuiltReport', 'Report', 'VMware', 'vSphere', 'vCenter', 'Documentation', 'PScribo', 'PSEdition_Desktop', 'PSEdition_Core', 'Windows', 'MacOS', 'Linux' 100 | 101 | # A URL to the license for this module. 102 | LicenseUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/master/LICENSE' 103 | 104 | # A URL to the main website for this project. 105 | ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere' 106 | 107 | # A URL to an icon representing this module. 108 | IconUri = ' https://github.com/AsBuiltReport.png' 109 | 110 | # ReleaseNotes of this module 111 | ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/master/CHANGELOG.md' 112 | 113 | # Prerelease string of this module 114 | # Prerelease = '' 115 | 116 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 117 | # RequireLicenseAcceptance = $false 118 | 119 | # External dependent modules of this module 120 | ExternalModuleDependencies = @('VCF.PowerCLI') 121 | 122 | } # End of PSData hashtable 123 | 124 | } # End of PrivateData hashtable 125 | 126 | # HelpInfo URI of this module 127 | # HelpInfoURI = '' 128 | 129 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 130 | # DefaultCommandPrefix = '' 131 | 132 | } 133 | 134 | -------------------------------------------------------------------------------- /Src/Private/Get-License.ps1: -------------------------------------------------------------------------------- 1 | function Get-License { 2 | <# 3 | .SYNOPSIS 4 | Function to retrieve vSphere product licensing information. 5 | .DESCRIPTION 6 | Function to retrieve vSphere product licensing information. 7 | .NOTES 8 | Version: 0.3.0 9 | Author: Tim Carman 10 | Twitter: @tpcarman 11 | Github: tpcarman 12 | .PARAMETER VMHost 13 | A vSphere ESXi Host object 14 | .PARAMETER vCenter 15 | A vSphere vCenter Server object 16 | .PARAMETER Licenses 17 | All vSphere product licenses 18 | .INPUTS 19 | System.Management.Automation.PSObject. 20 | .OUTPUTS 21 | System.Management.Automation.PSObject. 22 | .EXAMPLE 23 | Get-License -VMHost ESXi01 24 | .EXAMPLE 25 | Get-License -vCenter VCSA 26 | .EXAMPLE 27 | Get-License -Licenses 28 | #> 29 | [CmdletBinding()][OutputType('System.Management.Automation.PSObject')] 30 | 31 | Param 32 | ( 33 | [Parameter(Mandatory = $false, ValueFromPipeline = $false)] 34 | [ValidateNotNullOrEmpty()] 35 | [PSObject]$vCenter, 36 | [PSObject]$VMHost, 37 | [Parameter(Mandatory = $false, ValueFromPipeline = $false)] 38 | [Switch]$Licenses 39 | ) 40 | 41 | $LicenseObject = @() 42 | $ServiceInstance = Get-View ServiceInstance -Server $vCenter 43 | $LicenseManager = Get-View $ServiceInstance.Content.LicenseManager -Server $vCenter 44 | $LicenseManagerAssign = Get-View $LicenseManager.LicenseAssignmentManager -Server $vCenter 45 | if ($VMHost) { 46 | $VMHostId = $VMHost.Extensiondata.Config.Host.Value 47 | $VMHostAssignedLicense = $LicenseManagerAssign.QueryAssignedLicenses($VMHostId) 48 | $VMHostLicense = $VMHostAssignedLicense.AssignedLicense 49 | $VMHostLicenseExpiration = ($VMHostLicense.Properties | Where-Object { $_.Key -eq 'expirationDate' } | Select-Object Value).Value 50 | if ($VMHostLicense.LicenseKey -and $Options.ShowLicenseKeys) { 51 | $VMHostLicenseKey = $VMHostLicense.LicenseKey 52 | } else { 53 | $keyParts = $VMHostLicense.LicenseKey -split '-' 54 | $lastPart = $keyParts[-1] 55 | $maskedParts = $keyParts[0..($keyParts.Length - 2)] | ForEach-Object { '*' * $_.Length } 56 | $VMHostLicenseKey = ($maskedParts -join '-') + '-' + $lastPart 57 | } 58 | $LicenseObject = [PSCustomObject]@{ 59 | Product = $VMHostLicense.Name 60 | LicenseKey = $VMHostLicenseKey 61 | Expiration = 62 | if ($null -eq $VMHostLicenseExpiration) { 63 | "Never" 64 | } elseif ($VMHostLicenseExpiration -gt (Get-Date)) { 65 | $VMHostLicenseExpiration.ToShortDateString() 66 | } else { 67 | "Expired" 68 | } 69 | } 70 | } 71 | if ($vCenter) { 72 | $vCenterAssignedLicense = $LicenseManagerAssign.GetType().GetMethod("QueryAssignedLicenses").Invoke($LicenseManagerAssign, @($_.MoRef.Value)) | Where-Object { $_.EntityID -eq $vCenter.InstanceUuid } 73 | $vCenterLicense = $vCenterAssignedLicense.AssignedLicense 74 | $vCenterLicenseExpiration = ($vCenterLicense.Properties | Where-Object { $_.Key -eq 'expirationDate' } | Select-Object Value).Value 75 | if ($vCenterLicense.LicenseKey -and $Options.ShowLicenseKeys) { 76 | $vCenterLicenseKey = $vCenterLicense.LicenseKey 77 | } else { 78 | $keyParts = $vCenterLicense.LicenseKey -split '-' 79 | $lastPart = $keyParts[-1] 80 | $maskedParts = $keyParts[0..($keyParts.Length - 2)] | ForEach-Object { '*' * $_.Length } 81 | $vCenterLicenseKey = ($maskedParts -join '-') + '-' + $lastPart 82 | } 83 | $LicenseObject = [PSCustomObject]@{ 84 | Product = $vCenterLicense.Name 85 | LicenseKey = $vCenterLicenseKey 86 | Expiration = 87 | if ($vCenterLicenseExpiration -eq $null) { 88 | "Never" 89 | } elseif ($vCenterLicenseExpiration -gt (Get-Date)) { 90 | $vCenterLicenseExpiration.ToShortDateString() 91 | } else { 92 | "Expired" 93 | } 94 | } 95 | } 96 | if ($Licenses) { 97 | foreach ($License in ($LicenseManager.Licenses | Where-Object { $_.licensekey -ne '' })) { 98 | $Object = @() 99 | $LicenseExpiration = $License.Properties | Where-Object { $_.Key -eq 'expirationDate' } | Select-Object -ExpandProperty Value 100 | if ($Options.ShowLicenseKeys) { 101 | $LicenseKey = $License.LicenseKey 102 | } else { 103 | $keyParts = $License.LicenseKey -split '-' 104 | $lastPart = $keyParts[-1] 105 | $maskedParts = $keyParts[0..($keyParts.Length - 2)] | ForEach-Object { '*' * $_.Length } 106 | $LicenseKey = ($maskedParts -join '-') + '-' + $lastPart 107 | } 108 | $Object = [PSCustomObject]@{ 109 | 'License' = $License.License 110 | 'Product' = $License.Name 111 | 'LicenseKey' = $LicenseKey 112 | 'Total' = $License.Total 113 | 'Used' = Switch ($License.Used) { 114 | $null { "0" } 115 | default { $License.Used } 116 | } 117 | 'Expiration' = 118 | if ($LicenseExpiration -eq $null) { 119 | "Never" 120 | } elseif ($LicenseExpiration -gt (Get-Date)) { 121 | $LicenseExpiration.ToShortDateString() 122 | } else { 123 | "Expired" 124 | } 125 | } 126 | $LicenseObject += $Object 127 | } 128 | } 129 | Write-Output $LicenseObject 130 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # :arrows_clockwise: VMware vSphere As Built Report Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## 1.3.6 - 2025-08-24 9 | 10 | ### Fixed 11 | - Fix divide by zero error (@rebelinux) ([Fix #129](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/129)) 12 | - Fix PowerCLI module dependency ([#134](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/134)) 13 | - Update colour placeholders in `README.md` 14 | 15 | ### Changed 16 | - Improve vSAN Capacity reporting and healthchecks 17 | - Add `VCF.PowerCLI` to `ExternalModuleDependencies` in the module manifest. 18 | 19 | ### Removed 20 | - Remove `Get-RequiredModule` function to check for PowerCLI versions. 21 | - Remove VMware document style script 22 | 23 | ## 1.3.5 - 2025-02-27 24 | ### Fixed 25 | - Fix issue with license reporting ([Fix #128](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/128)) 26 | - Fix issue with vCenter user privileges not handling groups (@nathcoad) ([Fix #102](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/102)) 27 | - Fix time & date outputs showing incorrect date format 28 | - Fix VMware Update Manager reporting with PowerShell 7 29 | 30 | ### Added 31 | - Add Free resource capacity reporting to VMhost hardware section 32 | 33 | ### Changed 34 | - Update VMware PowerCLI requirements to version 13.3 35 | - Improve error reporting for vSAN section 36 | - Improve data size reporting. Data sizes are now displayed in more appropriately sized data units. 37 | - Change list tables to 40/60 column widths 38 | - Change datastore capacity reporting to include percentage used & free values 39 | - Update GitHub release workflow to add post to Bluesky social platform 40 | 41 | ## 1.3.4.1 - 2024-03-28 42 | 43 | ### Fixed 44 | - Add VSAN ESA support ([Fix #113](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/113)) 45 | 46 | ## [[1.3.4](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.3.4)] - 2024-02-28 47 | 48 | ### Changed 49 | - Update VMware PowerCLI requirements to version 13.2 ([Fix #107](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/107)) 50 | - Improve bug and feature request templates (@rebelinux) 51 | - Improve TOC structure 52 | - Update VMware style script for improved TOC structure 53 | - Update GitHub action workflows 54 | 55 | ### Fixed 56 | - Update VMHost PCI Devices reporting to fix issues with ESXi 8.x hosts (@orb71) ([Fix #105](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/105)) & ([Fix #111](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/111)) 57 | - Add Try/Catch stated PCI Drivers and Firmware section to provide a workaround for ESXi 8.x hosts ([Fix #116](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/116)) 58 | - Update vCenter Server alarms reporting ([Fix #106](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/106)) 59 | - Fix issue with Platform Services Controller reporting ([Fix #103](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/103)) 60 | - Fix NSX-T virtual switch network labels ([Fix #118](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/118)) 61 | 62 | ### Removed 63 | - Removed reporting of vCenter Server OS type 64 | 65 | ## [[1.3.3.1](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.3.3.1)] - 2022-04-21 66 | 67 | ### Added 68 | - Add VMHost IPMI / BMC configuration information 69 | 70 | ### Fixed 71 | - Fix GitHub Action release workflow 72 | 73 | ## [[1.3.2](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.3.2)] - 2022-03-24 74 | 75 | ### Added 76 | - Automated tweet release workflow 77 | 78 | ### Fixed 79 | - Fix colour placeholders in `README.md` 80 | 81 | ## [[1.3.1](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.3.1)] - 2021-09-03 82 | 83 | ### Added 84 | - VMHost network adapter LLDP reporting 85 | 86 | ## [[1.3.0](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.3.0)] - 2021-08-29 87 | ### Added 88 | - PowerShell 7 compatibility 89 | - PSScriptAnalyzer & PublishPSModule GitHub Action workflows 90 | - Advanced detailed reporting for VI roles 91 | - Advanced detailed reporting for vSAN disks 92 | - Support for VMware Cloud environments (VCF, VMC, AVS, GVE) ([Fix #87](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/87)) 93 | - NSX TCP/IP stacks for VMkernel Adpater reporting 94 | - Include release and issue links in `CHANGELOG.md` 95 | ### Fixed 96 | - Incorrect section reporting with certain InfoLevels 97 | - Datastore table now sorts by Datastore Name 98 | - vSAN advanced detailed reporting 99 | - Distributed vSwitch advanced detailed reporting 100 | - Display issues with highlights in `README.md` 101 | 102 | ## [[1.2.1](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.2.1)] - 2020-09-29 103 | ### Fixed 104 | - Fixed sort order of VMHost PCI Devices 105 | - Fixed VMHost reporting for InfoLevels 1 & 2 106 | - Fixed DSCluster reporting for InfoLevels 1 & 2 107 | 108 | ### Changed 109 | - Set fixed table column widths for improved formatting 110 | - Corrected section header colours in VMware default style 111 | 112 | ## [[1.2.0](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.2.0)] - 2020-08-31 113 | ### Added 114 | - vCenter Server advanced system settings 115 | - vCenter Server alarm health check 116 | - Basic VM storage policy reporting 117 | - Headers, footers & table captions/numbering 118 | 119 | ### Changed 120 | - Improved table formatting 121 | - Enhanced vCenter alarm reporting 122 | - Changed Tag Assignment section to separate the category and tag to their own table columns 123 | - Changed Tag Assignment section to sort on Entity 124 | - Renamed InfoLevel `Informative` to `Adv Summary` 125 | - Moved script functions from main script to private functions 126 | 127 | ### Fixed 128 | - Section error with vSAN InfoLevel 4 or above 129 | - Fixed text color for highlighted cells in default VMware style 130 | - Fixed reporting of stateless boot devices ([Fix #76](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/76)) 131 | - Fixed issue where script was failing trying to parse vSphere Tag data ([Fix #77](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/77)) 132 | - Fixed issue with reporting on PCI-E device drivers by adding additional filter ([Fix #75](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/75)) 133 | 134 | ## [[1.1.3](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.1.3)] - 2020-02-04 135 | ### Added 136 | - Added vCenter Server certificate information ([Fix #31](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/31)) 137 | - Added VM summary information 138 | - Added VM disk and guest volume information 139 | - Added Virtual Switch to VMkernel adapter information 140 | - Added Virtual Switch & Port Group Traffic Shaping information 141 | - Added vSAN Disk Groups, iSCSI Targets & LUN reporting 142 | - Added number of paths to SCSI LUN information 143 | - Added VMHost CPU & Memory totals to Informative level 144 | - Added VM Connection State information & health check 145 | - Added number of targets, devices & paths to storage adapters 146 | - Added VMHost storage and network adapter health checks 147 | - Added License expiration information 148 | - Added additional information to VMkernel adapters 149 | - Added NTP, SSH & ESXi Shell health checks 150 | 151 | ### Changed 152 | - Improved report formatting 153 | - Improved VMHost storage adapter reporting ([Fix #32](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/32)) 154 | - Improved VMHost network adapter CDP reporting 155 | - Improved VM SCSI controller reporting 156 | - Updated VMHost CPU & Memory totals/usage in Detailed level 157 | - Updated report JSON structure & default settings. A new report JSON must be generated for this release, use `New-AsBuiltReportConfig -Report VMware.vSphere -Path -Overwrite`. 158 | - Updated README with minimum required privileges to generate a VMware vSphere As Built Report. Full administrator privileges should no longer be required. 159 | 160 | ### Fixed 161 | - Resolved issue with VMHost PCI device reporting ([Fix #33](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/33)) 162 | - Resolved issue with reporting of ESXi boot device size ([Fix #65](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/65)) 163 | - Resolved issue with vSphere licensing ([Fix #68](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/68) & [Fix #69](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/69)) 164 | - Resolved vSwitch reporting issue with physical adpaters ([Fix #27](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/27)) 165 | - Resolved issue with VMHost uptime health check reporting 166 | 167 | ### Removed 168 | - Removed support for ESX/ESXi hosts prior to vSphere 5.0 ([Fix #67](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/issues/67)) 169 | - Removed VMHost CPU & Memory usage from Informative level 170 | 171 | ## [[1.0.7](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.0.7)] - 2019-06-21 172 | ### Changed 173 | - Fixed font in default VMware style 174 | - Updated module manifest for icon and release notes 175 | 176 | ### Removed 177 | - Removed Services health check 178 | 179 | ## [[1.0.6](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.0.6)] - 2019-05-16 180 | ### Changed 181 | - Fixed code errors which prevented a report from being generated 182 | - Improved code and report readability 183 | - Fixed vCenter Server licensing reporting 184 | - Fixed Datastore reporting when an empty datastore cluster exists 185 | - Fixed DRS Cluster Group reporting when group does not contain any members 186 | - Fixed DRS Cluster Group sorting 187 | - Fixed VMHost reporting to exclude HCX Cloud Gateway host 188 | - Updated VMware default style to more closely align with Clarity 189 | 190 | ## [[1.0.0](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/releases/tag/v1.0.0)] - 2019-03-27 191 | ### Added 192 | - Added Update Manager Server name to vCenter Server detailed information 193 | 194 | ### Changed 195 | - Fixed VMHost count for Distributed Virtual Switches 196 | - Fixed vCenter Server licensing for vCenter Server 5.5/6.0 197 | - Fixed script termination where ESXi hosts do not have a datastore 198 | 199 | ## [0.4.0] - 2019-03-15 200 | ### Changed 201 | - Refactored into PowerShell module 202 | - Updated default VMware style sheet to include page orientation 203 | - Changed VM Snapshot reporting to be per VM for InfoLevel 3 204 | 205 | ### Removed 206 | - Removed NSX-V reporting 207 | 208 | ## [0.3.0] - 2019-02-01 209 | ### Added 210 | - Added Cluster VM Overrides section 211 | 212 | ### Changed 213 | - Improved code structure & readability 214 | - Improved output formatting 215 | - Improved vSphere HA/DRS Cluster reporting and health checks 216 | - Improved VM reporting and health checks 217 | - Fixed sorting of numerous table entries 218 | - Fixed VMHost & VM uptime calculations 219 | - Fixed display of 3rd party Multipath Policy plugins 220 | - Fixed vSAN type & disk count 221 | - Updated Get-Uptime & Get-License functions 222 | 223 | ## [0.2.2] - 2018-09-19 224 | ### Added 225 | - Added new VM health checks for CPU Hot Add/Remove, Memory Hot Add & Change Block Tracking 226 | - Improved VM reporting for Guest OS, CPU Hot Add/Remove, Memory Hot Add & Change Block Tracking 227 | - Minor updates to section paragraph text 228 | 229 | ## [0.2.1] 230 | ### Added 231 | - Added SDRS VM Overrides to Datastore Cluster section 232 | 233 | ### Changed 234 | - SCSI LUN section rewritten to improve script performance 235 | - Fixed issues with current working directory paths 236 | - Changed InfoLevel settings and definitions 237 | - Script formatting improvements to some sections to align with PowerShell best practice guidelines 238 | - vCenter Server SSL Certificate section removed temporarily 239 | 240 | ## [0.2.0] 241 | ### Added 242 | - Added regions/endregions to all sections of script 243 | - Added Resource Pool summary information 244 | - Added vSAN summary information 245 | - Added vCenter Server mail settings health check 246 | - Added DSCluster health checks 247 | - Added VM Power State health check 248 | - Added support for NSX-V reporting 249 | 250 | ### Changed 251 | - Updated about_Requires to PScribo module 0.7.24 252 | - Formatting improvements 253 | - Datastore Clusters now has it's own dedicated section 254 | - Renamed Storage section to Datastores 255 | - Renamed Storage health checks section to Datastore 256 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | 4 |

5 |

6 | 7 | 8 | 9 | 10 | 11 | 12 |

13 |

14 | 15 | 16 | 17 | 18 | 19 | 20 |

21 |

22 | 23 | 24 |

25 | 26 |

27 | Buy Me a Coffee at ko-fi.com 28 |

29 | 30 | # VMware vSphere As Built Report 31 | 32 | VMware vSphere As Built Report is a PowerShell module which works in conjunction with [AsBuiltReport.Core](https://github.com/AsBuiltReport/AsBuiltReport.Core). 33 | 34 | [AsBuiltReport](https://github.com/AsBuiltReport/AsBuiltReport) is an open-sourced community project which utilises PowerShell to produce as-built documentation in multiple document formats for multiple vendors and technologies. 35 | 36 | The VMware vSphere As Built Report module is used to generate as built documentation for VMware vSphere / vCenter Server environments. 37 | 38 | Please refer to the [VMware ESXi AsBuiltReport](https://github.com/AsBuiltReport/AsBuiltReport.VMware.ESXi) for reporting of standalone VMware ESXi servers. 39 | 40 | Please refer to the AsBuiltReport [website](https://www.asbuiltreport.com) for more detailed information about this project. 41 | 42 | ## :books: Sample Reports 43 | ### Sample Report 1 - Default Style 44 | Sample vSphere As Built report with health checks, using default report style. 45 | 46 | ![Sample vSphere Report 1](https://github.com/AsBuiltReport/AsBuiltReport.VMware.vSphere/blob/master/Samples/Sample_vSphere_Report_1.png "Sample vSphere Report 1") 47 | 48 | # :beginner: Getting Started 49 | Below are the instructions on how to install, configure and generate a VMware vSphere As Built report. 50 | 51 | ## :floppy_disk: Supported Versions 52 | 53 | ### VMware vSphere 54 | The VMware vSphere As Built Report supports the following vSphere versions; 55 | - vSphere 7.0 56 | - vSphere 8.0 57 | 58 | #### End of Support 59 | The following VMware vSphere versions are no longer being tested and/or supported; 60 | - vSphere 5.5 61 | - vSphere 6.0 62 | - vSphere 6.5 63 | - vSphere 6.7 64 | 65 | ### PowerShell 66 | This report is compatible with the following PowerShell versions; 67 | 68 | | Windows PowerShell 5.1 | PowerShell 7 | 69 | |:----------------------:|:--------------------:| 70 | | :white_check_mark: | :white_check_mark: | 71 | 72 | ## :wrench: System Requirements 73 | PowerShell 5.1 or PowerShell 7, and the following PowerShell modules are required for generating a VMware vSphere As Built report. 74 | 75 | Each of these modules can be easily downloaded and installed via the PowerShell Gallery 76 | 77 | - [VCF PowerCLI Module](https://www.powershellgallery.com/packages/VCF.PowerCLI/) 78 | - [AsBuiltReport.VMware.vSphere Module](https://www.powershellgallery.com/packages/AsBuiltReport.VMware.vSphere/) 79 | 80 | ### :closed_lock_with_key: Required Privileges 81 | 82 | A VMware vSphere As Built Report can be generated with read-only privileges, however the following sections will be skipped; 83 | 84 | * vSphere licensing information 85 | * VM Storage Policy information 86 | * VMware Update Manager / Lifecycle Manager information 87 | 88 | For a complete report, the following role assigned privileges are required; 89 | 90 | * Global > Licenses 91 | * Global > Settings 92 | * Host > Configuration > Change Settings 93 | * Profile-driven Storage > Profile-driven storage view 94 | * VMware vSphere Update Manager > View Compliance Status 95 | 96 | ## :package: Module Installation 97 | 98 | Open a PowerShell terminal window and install each of the required modules. 99 | 100 | :warning: VCF PowerCLI 9.0 or higher is required. Please ensure older PowerCLI versions have been uninstalled. 101 | 102 | ```powershell 103 | install-module VCF.PowerCLI -MinimumVersion 9.0 -AllowClobber -SkipPublisherCheck 104 | install-module AsBuiltReport.VMware.vSphere 105 | ``` 106 | 107 | ## :pencil2: Configuration 108 | The vSphere As Built Report utilises a JSON file to allow configuration of report information, options, detail and healthchecks. 109 | 110 | A vSphere report configuration file can be generated by executing the following command; 111 | ```powershell 112 | New-AsBuiltReportConfig -Report VMware.vSphere -FolderPath -Filename 113 | ``` 114 | 115 | Executing this command will copy the default vSphere report JSON configuration to a user specified folder. 116 | 117 | All report settings can then be configured via the JSON file. 118 | 119 | The following provides information of how to configure each schema within the report's JSON file. 120 | 121 | ### Report 122 | The **Report** schema provides configuration of the vSphere report information. 123 | 124 | | Sub-Schema | Setting | Default | Description | 125 | |---------------------|--------------|--------------------------------|--------------------------------------------------------------| 126 | | Name | User defined | VMware vSphere As Built Report | The name of the As Built Report | 127 | | Version | User defined | 1.0 | The report version | 128 | | Status | User defined | Released | The report release status | 129 | | ShowCoverPageImage | true / false | true | Toggle to enable/disable the display of the cover page image | 130 | | ShowTableOfContents | true / false | true | Toggle to enable/disable table of contents | 131 | | ShowHeaderFooter | true / false | true | Toggle to enable/disable document headers & footers | 132 | | ShowTableCaptions | true / false | true | Toggle to enable/disable table captions/numbering | 133 | 134 | ### Options 135 | The **Options** schema allows certain options within the report to be toggled on or off. 136 | 137 | | Sub-Schema | Setting | Default | Description | 138 | |-----------------|--------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 139 | | ShowLicenseKeys | true / false | false | Toggle to mask/unmask vSphere license keys

**Masked License Key**
\*\*\*\*\*-\*\*\*\*\*-\*\*\*\*\*-\*\*\*\*\*-AS12K

**Unmasked License Key**
AKLU4-PFG8M-W2D8J-56YDM-AS12K | 140 | | ShowVMSnapshots | true / false | true | Toggle to enable/disable reporting of VM snapshots | 141 | 142 | ### InfoLevel 143 | The **InfoLevel** schema allows configuration of each section of the report at a granular level. The following sections can be set. 144 | 145 | There are 6 levels (0-5) of detail granularity for each section as follows; 146 | 147 | | Setting | InfoLevel | Description | 148 | |:-------:|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------| 149 | | 0 | Disabled | Does not collect or display any information | 150 | | 1 | Enabled / Summary | Provides summarised information for a collection of objects | 151 | | 2 | Adv Summary | Provides condensed, detailed information for a collection of objects | 152 | | 3 | Detailed | Provides detailed information for individual objects | 153 | | 4 | Adv Detailed | Provides detailed information for individual objects, as well as information for associated objects (Hosts, Clusters, Datastores, VMs etc) | 154 | | 5 | Comprehensive | Provides comprehensive information for individual objects, such as advanced configuration settings | 155 | 156 | The table below outlines the default and maximum **InfoLevel** settings for each section. 157 | 158 | | Sub-Schema | Default Setting | Maximum Setting | 159 | |--------------|:---------------:|:---------------:| 160 | | vCenter | 3 | 5 | 161 | | Cluster | 3 | 4 | 162 | | ResourcePool | 3 | 4 | 163 | | VMHost | 3 | 5 | 164 | | Network | 3 | 4 | 165 | | vSAN | 3 | 4 | 166 | | Datastore | 3 | 4 | 167 | | DSCluster | 3 | 4 | 168 | | VM | 2 | 4 | 169 | | VUM | 3 | 5 | 170 | 171 | ### Healthcheck 172 | The **Healthcheck** schema is used to toggle health checks on or off. 173 | 174 | #### vCenter 175 | The **vCenter** schema is used to configure health checks for vCenter Server. 176 | 177 | | Sub-Schema | Setting | Default | Description | Highlight | 178 | |------------|--------------|---------|-----------------------------------------------------|-------------------------------------------------------------------------------------------| 179 | | Mail | true / false | true | Highlights mail settings which are not configured | ![Critical](https://place-hold.it/15/ffb38f/ffb38f) Not Configured | 180 | | Licensing | true / false | true | Highlights product evaluation licenses | ![Warning](https://place-hold.it/15/ffe860/ffe860) Product evaluation license in use | 181 | | Alarms | true / false | true | Highlights vCenter Server alarms which are disabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Alarm disabled | 182 | 183 | #### Cluster 184 | The **Cluster** schema is used to configure health checks for vSphere Clusters. 185 | 186 | | Sub-Schema | Setting | Default | Description | Highlight | 187 | |-----------------------------|--------------|---------|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------| 188 | | HAEnabled | true / false | true | Highlights vSphere Clusters which do not have vSphere HA enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA disabled | 189 | | HAAdmissionControl | true / false | true | Highlights vSphere Clusters which do not have vSphere HA Admission Control enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA Admission Control disabled | 190 | | HostFailureResponse | true / false | true | Highlights vSphere Clusters which have vSphere HA Failure Response set to disabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA Host Failure Response disabled | 191 | | HostMonitoring | true / false | true | Highlights vSphere Clusters which do not have vSphere HA Host Monitoring enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA Host Monitoring disabled | 192 | | DatastoreOnPDL | true / false | true | Highlights vSphere Clusters which do not have Datastore on PDL enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA Datastore on PDL disabled | 193 | | DatastoreOnAPD | true / false | true | Highlights vSphere Clusters which do not have Datastore on APD enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere HA Datastore on APD disabled | 194 | | APDTimeOut | true / false | true | Highlights vSphere Clusters which do not have APDTimeOut enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) APDTimeOut disabled | 195 | | vmMonitoing | true / false | true | Highlights vSphere Clusters which do not have VM Monitoting enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) VM Monitoring disabled | 196 | | DRSEnabled | true / false | true | Highlights vSphere Clusters which do not have vSphere DRS enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere DRS disabled | 197 | | DRSAutomationLevelFullyAuto | true / false | true | Checks the vSphere DRS Automation Level is set to 'Fully Automated' | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere DRS Automation Level not set to 'Fully Automated' | 198 | | PredictiveDRS | true / false | false | Highlights vSphere Clusters which do not have Predictive DRS enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Predictive DRS disabled | 199 | | DRSVMHostRules | true / false | true | Highlights DRS VMHost rules which are disabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) DRS VMHost rule disabled | 200 | | DRSRules | true / false | true | Highlights DRS rules which are disabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) DRS rule disabled | 201 | | vSANEnabled | true / false | true | Highlights vSphere Clusters which do not have Virtual SAN enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Virtual SAN disabled | 202 | | EVCEnabled | true / false | true | Highlights vSphere Clusters which do not have Enhanced vMotion Compatibility (EVC) enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) vSphere EVC disabled | 203 | | VUMCompliance | true / false | true | Highlights vSphere Clusters which do not comply with VMware Update Manager baselines | ![Warning](https://place-hold.it/15/ffe860/ffe860) Unknown
![Critical](https://place-hold.it/15/ffb38f/ffb38f) Not Compliant | 204 | 205 | #### VMHost 206 | The **VMHost** schema is used to configure health checks for VMHosts. 207 | 208 | | Sub-Schema | Setting | Default | Description | Highlight | 209 | |-----------------|--------------|---------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 210 | | ConnectionState | true / false | true | Highlights VMHosts which are in maintenance mode or disconnected | ![Warning](https://place-hold.it/15/ffe860/ffe860) Maintenance
![Critical](https://place-hold.it/15/ffb38f/ffb38f) Disconnected | 211 | | HyperThreading | true / false | true | Highlights VMHosts which have HyperThreading disabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) HyperThreading disabled
| 212 | | ScratchLocation | true / false | true | Highlights VMHosts which are configured with the default scratch location | ![Warning](https://place-hold.it/15/ffe860/ffe860) Scratch location is /tmp/scratch | 213 | | IPv6 | true / false | true | Highlights VMHosts which do not have IPv6 enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) IPv6 disabled | 214 | | UpTimeDays | true / false | true | Highlights VMHosts with uptime days greater than 9 months | ![Warning](https://place-hold.it/15/ffe860/ffe860) 9 - 12 months
![Critical](https://place-hold.it/15/ffb38f/ffb38f) >12 months | 215 | | Licensing | true / false | true | Highlights VMHosts which are using production evaluation licenses | ![Warning](https://place-hold.it/15/ffe860/ffe860) Product evaluation license in use | 216 | | SSH | true / false | true | Highlights if the SSH service is enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) TSM / TSM-SSH service enabled | 217 | | ESXiShell | true / false | true | Highlights if the ESXi Shell service is enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) TSM / TSM-EsxiShell service enabled | 218 | | NTP | true / false | true | Highlights if the NTP service has stopped or is disabled on a VMHost | ![Critical](https://place-hold.it/15/ffb38f/ffb38f) NTP service stopped / disabled | 219 | | StorageAdapter | true / false | true | Highlights storage adapters which are not 'Online' | ![Warning](https://place-hold.it/15/ffe860/ffe860) Storage adapter status is 'Unknown'
![Critical](https://place-hold.it/15/ffb38f/ffb38f) Storage adapter status is 'Offline' | 220 | | NetworkAdapter | true / false | true | Highlights physical network adapters which are not 'Connected'
Highlights physical network adapters which are 'Down' | ![Critical](https://place-hold.it/15/ffb38f/ffb38f) Network adapter is 'Disconnected'
![Critical](https://place-hold.it/15/ffb38f/ffb38f) Network adapter is 'Down' | 221 | | LockdownMode | true / false | true | Highlights VMHosts which do not have Lockdown mode enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Lockdown Mode disabled
| 222 | | VUMCompliance | true / false | true | Highlights VMHosts which are not compliant with VMware Update Manager software packages | ![Warning](https://place-hold.it/15/ffe860/ffe860) Unknown
![Critical](https://place-hold.it/15/ffb38f/ffb38f) Incompatible | 223 | 224 | #### vSAN 225 | The **vSAN** schema is used to configure health checks for vSAN. 226 | 227 | | Sub-Schema | Setting | Default | Description | Highlight | 228 | |---------------------|--------------|---------|------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| 229 | | CapacityUtilization | true / false | true | Highlights vSAN clusters with storage capacity utilization over 75% | ![Warning](https://place-hold.it/15/ffe860/ffe860) 75 - 90% utilized
![Critical](https://place-hold.it/15/ffb38f/ffb38f) >90% utilized | 230 | 231 | #### Datastore 232 | The **Datastore** schema is used to configure health checks for Datastores. 233 | 234 | | Sub-Schema | Setting | Default | Description | Highlight | 235 | |---------------------|--------------|---------|------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| 236 | | CapacityUtilization | true / false | true | Highlights datastores with storage capacity utilization over 75% | ![Warning](https://place-hold.it/15/ffe860/ffe860) 75 - 90% utilized
![Critical](https://place-hold.it/15/ffb38f/ffb38f) >90% utilized | 237 | 238 | #### DSCluster 239 | The **DSCluster** schema is used to configure health checks for Datastore Clusters. 240 | 241 | | Sub-Schema | Setting | Default | Description | Highlight | 242 | |------------------------------|--------------|---------|-------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| 243 | | CapacityUtilization | true / false | true | Highlights datastore clusters with storage capacity utilization over 75% | ![Warning](https://place-hold.it/15/ffe860/ffe860) 75 - 90% utilized
![Critical](https://place-hold.it/15/ffb38f/ffb38f) >90% utilized | 244 | | SDRSAutomationLevelFullyAuto | true / false | true | Highlights if the Datastore Cluster SDRS Automation Level is not set to 'Fully Automated' | ![Warning](https://place-hold.it/15/ffe860/ffe860) Storage DRS Automation Level not set to 'Fully Automated' | 245 | 246 | #### VM 247 | The **VM** schema is used to configure health checks for virtual machines. 248 | 249 | | Sub-Schema | Setting | Default | Description | Highlight | 250 | |----------------------|--------------|---------|------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 251 | | PowerState | true / false | true | Highlights VMs which are powered off | ![Warning](https://place-hold.it/15/ffe860/ffe860) VM is powered off | 252 | | ConnectionState | true / false | true | Highlights VMs which are orphaned or inaccessible | ![Critical](https://place-hold.it/15/ffb38f/ffb38f) VM is orphaned or inaccessible | 253 | | CpuHotAdd | true / false | true | Highlights virtual machines which have CPU Hot Add enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) CPU Hot Add enabled | 254 | | CpuHotRemove | true / false | true | Highlights virtual machines which have CPU Hot Remove enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) CPU Hot Remove enabled | 255 | | MemoryHotAdd | true / false | true | Highlights VMs which have Memory Hot Add enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Memory Hot Add enabled | 256 | | ChangeBlockTracking | true / false | true | Highlights VMs which do not have Change Block Tracking enabled | ![Warning](https://place-hold.it/15/ffe860/ffe860) Change Block Tracking disabled | 257 | | SpbmPolicyCompliance | true / false | true | Highlights VMs which do not comply with storage based policies | ![Warning](https://place-hold.it/15/ffe860/ffe860) VM storage based policy compliance is unknown
![Critical](https://place-hold.it/15/ffb38f/ffb38f) VM does not comply with storage based policies | 258 | | VMToolsStatus | true / false | true | Highlights Virtual Machines which do not have VM Tools installed, are out of date or are not running | ![Warning](https://place-hold.it/15/ffe860/ffe860) VM Tools not installed, out of date or not running | 259 | | VMSnapshots | true / false | true | Highlights Virtual Machines which have snapshots older than 7 days | ![Warning](https://place-hold.it/15/ffe860/ffe860) VM Snapshot age >= 7 days
![Critical](https://place-hold.it/15/ffb38f/ffb38f) VM Snapshot age >= 14 days | 260 | 261 | ## :computer: Examples 262 | 263 | ```powershell 264 | # Generate a vSphere As Built Report for vCenter Server 'vcenter-01.corp.local' using specified credentials. Export report to HTML & DOCX formats. Use default report style. Append timestamp to report filename. Save reports to 'C:\Users\Tim\Documents' 265 | PS C:\> New-AsBuiltReport -Report VMware.vSphere -Target 'vcenter-01.corp.local' -Username 'administrator@vsphere.local' -Password 'VMware1!' -Format Html,Word -OutputFolderPath 'C:\Users\Tim\Documents' -Timestamp 266 | 267 | # Generate a vSphere As Built Report for vCenter Server 'vcenter-01.corp.local' using specified credentials and report configuration file. Export report to Text, HTML & DOCX formats. Use default report style. Save reports to 'C:\Users\Tim\Documents'. Display verbose messages to the console. 268 | PS C:\> New-AsBuiltReport -Report VMware.vSphere -Target 'vcenter-01.corp.local' -Username 'administrator@vsphere.local' -Password 'VMware1!' -Format Text,Html,Word -OutputFolderPath 'C:\Users\Tim\Documents' -ReportConfigFilePath 'C:\Users\Tim\AsBuiltReport\AsBuiltReport.VMware.vSphere.json' -Verbose 269 | 270 | # Generate a vSphere As Built Report for vCenter Server 'vcenter-01.corp.local' using stored credentials. Export report to HTML & Text formats. Use default report style. Highlight environment issues within the report. Save reports to 'C:\Users\Tim\Documents'. 271 | PS C:\> $Creds = Get-Credential 272 | PS C:\> New-AsBuiltReport -Report VMware.vSphere -Target 'vcenter-01.corp.local' -Credential $Creds -Format Html,Text -OutputFolderPath 'C:\Users\Tim\Documents' -EnableHealthCheck 273 | 274 | # Generate a single vSphere As Built Report for vCenter Servers 'vcenter-01.corp.local' and 'vcenter-02.corp.local' using specified credentials. Report exports to WORD format by default. Apply custom style to the report. Reports are saved to the user profile folder by default. 275 | PS C:\> New-AsBuiltReport -Report VMware.vSphere -Target 'vcenter-01.corp.local','vcenter-02.corp.local' -Username 'administrator@vsphere.local' -Password 'VMware1!' -StyleFilePath 'C:\Scripts\Styles\MyCustomStyle.ps1' 276 | 277 | # Generate a vSphere As Built Report for vCenter Server 'vcenter-01.corp.local' using specified credentials. Export report to HTML & DOCX formats. Use default report style. Reports are saved to the user profile folder by default. Attach and send reports via e-mail. 278 | PS C:\> New-AsBuiltReport -Report VMware.vSphere -Target 'vcenter-01.corp.local' -Username 'administrator@vsphere.local' -Password 'VMware1!' -Format Html,Word -OutputFolderPath 'C:\Users\Tim\Documents' -SendEmail 279 | ``` 280 | -------------------------------------------------------------------------------- /Samples/Sample vSphere As-Built Report.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Sample vSphere As-Built Report 4 | 44 |
45 |










Sample vSphere As-Built Report
ACME & Co



























Author:Tim Carman
Date:05 August 2018
Version:1.0
46 |
47 |

Table of Contents

48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 |
1192.168.1.110
1.1   vCenter Server
1.1.1      Database Settings
1.1.2      Mail Settings
1.1.3      Historical Statistics
1.1.4      Licensing
1.1.5      SSL Certificate
1.1.6      Roles
1.2   Clusters
1.2.1      New Cluster
1.2.1.1         HA Configuration
1.2.1.2         DRS Configuration
1.2.1.3         Permissions
1.2.2      Test Cluster
1.2.2.1         HA Configuration
1.2.2.2         DRS Configuration
1.2.2.3         Permissions
1.2.3      VSAN-Cluster
1.2.3.1         HA Configuration
1.2.3.2         DRS Configuration
1.2.3.2.1            DRS Cluster Groups
1.2.3.2.2            DRS VM/Host Rules
1.2.3.2.3            DRS Rules
1.2.3.3         Update Manager Baselines
1.2.3.4         Permissions
1.3   Resource Pools
1.4   Hosts
1.4.1      192.168.1.111
1.4.1.1         Hardware
1.4.1.1.1            Boot Devices
1.4.1.1.2            PCI Devices
1.4.1.2         System
1.4.1.2.1            Licensing
1.4.1.2.2            Host Profile
1.4.1.2.3            Image Profile
1.4.1.2.4            Time Configuration
1.4.1.2.5            Syslog Configuration
1.4.1.2.6            Update Manager Compliance
1.4.1.3         Storage
1.4.1.3.1            Datastores
1.4.1.4         Network
1.4.1.4.1            Physical Adapters
1.4.1.4.2            Cisco Discovery Protocol
1.4.1.4.3            VMkernel Adapters
1.4.1.4.4            Standard Virtual Switches
1.4.1.4.5            Virtual Switch Security Policy
1.4.1.4.6            Virtual Switch NIC Teaming
1.4.1.4.7            Virtual Port Groups
1.4.1.4.8            Virtual Port Group Security Policy
1.4.1.4.9            Virtual Port Group NIC Teaming
1.4.1.5         Security
1.4.1.5.1            Lockdown Mode
1.4.1.5.2            Services
1.4.1.5.3            Authentication Services
1.4.2      192.168.1.112
1.4.2.1         Hardware
1.4.2.1.1            Boot Devices
1.4.2.1.2            PCI Devices
1.4.2.2         System
1.4.2.2.1            Licensing
1.4.2.2.2            Host Profile
1.4.2.2.3            Image Profile
1.4.2.2.4            Time Configuration
1.4.2.2.5            Syslog Configuration
1.4.2.2.6            Update Manager Compliance
1.4.2.3         Storage
1.4.2.3.1            Datastores
1.4.2.4         Network
1.4.2.4.1            Physical Adapters
1.4.2.4.2            Cisco Discovery Protocol
1.4.2.4.3            VMkernel Adapters
1.4.2.4.4            Standard Virtual Switches
1.4.2.4.5            Virtual Switch Security Policy
1.4.2.4.6            Virtual Switch NIC Teaming
1.4.2.4.7            Virtual Port Groups
1.4.2.4.8            Virtual Port Group Security Policy
1.4.2.4.9            Virtual Port Group NIC Teaming
1.4.2.5         Security
1.4.2.5.1            Lockdown Mode
1.4.2.5.2            Services
1.4.2.5.3            Authentication Services
1.4.3      192.168.1.113
1.4.3.1         Hardware
1.4.3.1.1            Boot Devices
1.4.3.1.2            PCI Devices
1.4.3.2         System
1.4.3.2.1            Licensing
1.4.3.2.2            Host Profile
1.4.3.2.3            Image Profile
1.4.3.2.4            Time Configuration
1.4.3.2.5            Syslog Configuration
1.4.3.2.6            Update Manager Compliance
1.4.3.3         Storage
1.4.3.3.1            Datastores
1.4.3.4         Network
1.4.3.4.1            Physical Adapters
1.4.3.4.2            Cisco Discovery Protocol
1.4.3.4.3            VMkernel Adapters
1.4.3.4.4            Standard Virtual Switches
1.4.3.4.5            Virtual Switch Security Policy
1.4.3.4.6            Virtual Switch NIC Teaming
1.4.3.4.7            Virtual Port Groups
1.4.3.4.8            Virtual Port Group Security Policy
1.4.3.4.9            Virtual Port Group NIC Teaming
1.4.3.5         Security
1.4.3.5.1            Lockdown Mode
1.4.3.5.2            Services
1.4.3.5.3            Authentication Services
1.5   Distributed Virtual Switches
1.5.1      DSwitch
1.5.1.1         General Properties
1.5.1.2         Uplinks
1.5.1.3         Security
1.5.1.4         Traffic Shaping
1.5.1.5         Port Groups
1.5.1.6         Port Group Security
1.5.1.7         Port Group NIC Teaming
1.5.1.8         Private VLANs
1.5.2      DSwitch 1
1.5.2.1         General Properties
1.5.2.2         Security
1.5.2.3         Traffic Shaping
1.5.2.4         Port Groups
1.5.2.5         Port Group Security
1.5.2.6         Port Group NIC Teaming
1.6   vSAN
1.6.1      VSAN-Cluster
1.7   Storage
1.7.1      Datastore Specifications
1.8   Virtual Machines
1.8.1      Test_1
1.8.2      Test_2
1.8.3      Test_3
1.8.4      VM Snapshots
1.9   VMware Update Manager
1.9.1      Baselines
185 |
186 |

1 192.168.1.110

1.1 vCenter Server

The following section provides detailed information on the configuration of vCenter server 192.168.1.110.

187 |
Name192.168.1.110
IP Address192.168.1.110
Version6.5.0
Build5973321
OS Typelinux-x64
Instance Id42
Password Expiry in Days30
HTTP Port80
HTTPS Port443
Platform Services Controller192.168.1.110
188 |

1.1.1 Database Settings

189 |
Database Typeembedded
Data Source NameVMware VirtualCenter
Maximum Database Connections50
190 |

1.1.2 Mail Settings

191 |
SMTP Serversmtp.gmail.com
SMTP Port25
Mail Sender 
192 |

1.1.3 Historical Statistics

193 | 194 | 195 | 196 | 197 | 198 |
Interval DurationInterval EnabledSave DurationStatistics Level
5 MinutesTruePast day1
30 MinutesTruePast week1
2 HoursTruePast month1
1 DayTruePast year1
199 |

1.1.4 Licensing

200 | 201 | 202 | 203 | 204 | 205 |
Product NameLicense KeyTotalUsedAvailable
Product Evaluation*****-*****-*****-00000-000000 0
VMware vCenter Server 6 Standard*****-*****-*****-0J9U6-0NF2M211
VMware vSAN Enterprise*****-*****-*****-061A0-2NA7H1064
VMware vSphere 6 Enterprise Plus*****-*****-*****-079HM-29JHN3006294
206 |

1.1.5 SSL Certificate

207 |
CountryUS
StateCalifornia
LocalityPalo Alto
OrganizationVMware
Organizational UnitVMware Engineering
Emailvmca@vmware.com
Validity5 Years
208 |

1.1.6 Roles

209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 |
NameSystem Role
AdminTrue
AnonymousTrue
com.vmware.Content.AdminFalse
DatastoreConsumerFalse
InventoryService.Tagging.TaggingAdminFalse
NetworkConsumerFalse
NoAccessTrue
NoCryptoAdminTrue
ReadOnlyTrue
ResourcePoolAdministratorFalse
ViewTrue
VirtualMachineConsoleUserFalse
VirtualMachinePowerUserFalse
VirtualMachineUserFalse
VMwareConsolidatedBackupUserFalse
226 |
227 |

1.2 Clusters

The following section provides information on the configuration of each vSphere HA/DRS cluster.

228 | 229 | 230 | 231 |
NameDatacenterHost CountHA EnabledDRS EnabledvSAN EnabledEVC ModeVM Swap File PolicyVM Count
New ClusterDatacenter 10TrueTrueFalse WithVM0
Test ClusterDatacenter0FalseFalseFalseintel-ivybridgeWithVM0
VSAN-ClusterDatacenter3TrueTrueTrue WithVM3
232 |

1.2.1 New Cluster

The following table details the cluster configuration for cluster New Cluster.

233 |
NameNew Cluster
DatacenterDatacenter 1
Number of Hosts0
Number of VMs0
HA EnabledTrue
DRS EnabledTrue
vSAN EnabledFalse
EVC Mode 
VM Swap File PolicyWithVM
Connected Hosts 
234 |

1.2.1.1 HA Configuration

The following table details the vSphere HA configuration for cluster New Cluster.

235 |
HA EnabledTrue
HA Admission Control EnabledTrue
HA Failover Level1
HA Restart PriorityMedium
HA Isolation ResponseDoNothing
Heartbeat Selection PolicyallFeasibleDsWithUserPreference
Heartbeat Datastores 
236 |

1.2.1.2 DRS Configuration

The following table details the vSphere DRS configuration for cluster New Cluster.

237 |
DRS EnabledTrue
DRS Automation LevelFullyAutomated
DRS Migration Threshold3
238 |
239 |
VM Distribution 
Memory Metric for Load Balancing 
CPU Over-Commitment 
240 |

1.2.1.3 Permissions

The following table details the permissions assigned to cluster New Cluster.

241 | 242 | 243 | 244 | 245 | 246 |
User/GroupIs Group?RoleDefined InPropagate
VSPHERE.LOCAL\vpxd-extension-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vpxd-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vsphere-webclient-0cd516db-cbaa-434b-8b6f-90452748e378FalseReadOnlyDatacentersTrue
VSPHERE.LOCAL\AdministratorFalseAdminDatacentersTrue
VSPHERE.LOCAL\AdministratorsTrueAdminDatacentersTrue
247 |

1.2.2 Test Cluster

The following table details the cluster configuration for cluster Test Cluster.

248 |
NameTest Cluster
DatacenterDatacenter
Number of Hosts0
Number of VMs0
HA EnabledFalse
DRS EnabledFalse
vSAN EnabledFalse
EVC Modeintel-ivybridge
VM Swap File PolicyWithVM
Connected Hosts 
249 |

1.2.2.1 HA Configuration

The following table details the vSphere HA configuration for cluster Test Cluster.

250 |
HA EnabledFalse
HA Admission Control EnabledFalse
HA Failover Level1
HA Restart PriorityMedium
HA Isolation ResponseDoNothing
Heartbeat Selection PolicyallFeasibleDsWithUserPreference
Heartbeat Datastores 
251 |

1.2.2.2 DRS Configuration

The following table details the vSphere DRS configuration for cluster Test Cluster.

252 |
DRS EnabledFalse
DRS Automation LevelFullyAutomated
DRS Migration Threshold3
253 |
254 |
VM Distribution 
Memory Metric for Load Balancing 
CPU Over-Commitment 
255 |

1.2.2.3 Permissions

The following table details the permissions assigned to cluster Test Cluster.

256 | 257 | 258 | 259 | 260 | 261 |
User/GroupIs Group?RoleDefined InPropagate
VSPHERE.LOCAL\vpxd-extension-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vpxd-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vsphere-webclient-0cd516db-cbaa-434b-8b6f-90452748e378FalseReadOnlyDatacentersTrue
VSPHERE.LOCAL\AdministratorFalseAdminDatacentersTrue
VSPHERE.LOCAL\AdministratorsTrueAdminDatacentersTrue
262 |

1.2.3 VSAN-Cluster

The following table details the cluster configuration for cluster VSAN-Cluster.

263 |
NameVSAN-Cluster
DatacenterDatacenter
Number of Hosts3
Number of VMs3
HA EnabledTrue
DRS EnabledTrue
vSAN EnabledTrue
EVC Mode 
VM Swap File PolicyWithVM
Connected Hosts192.168.1.111, 192.168.1.112, 192.168.1.113
264 |

1.2.3.1 HA Configuration

The following table details the vSphere HA configuration for cluster VSAN-Cluster.

265 |
HA EnabledTrue
HA Admission Control EnabledTrue
HA Failover Level1
HA Restart PriorityMedium
HA Isolation ResponseDoNothing
Heartbeat Selection PolicyallFeasibleDsWithUserPreference
Heartbeat Datastores 
266 |

1.2.3.2 DRS Configuration

The following table details the vSphere DRS configuration for cluster VSAN-Cluster.

267 |
DRS EnabledTrue
DRS Automation LevelFullyAutomated
DRS Migration Threshold3
268 |
269 |
VM Distribution1
Memory Metric for Load Balancing100
CPU Over-Commitment 
270 |
1.2.3.2.1 DRS Cluster Groups
271 | 272 | 273 |
NameGroup TypeMembers
Test_VMsVMGroupTest_1, Test_2
Prod_HostsVMHostGroup192.168.1.111, 192.168.1.112, 192.168.1.113
274 |
1.2.3.2.2 DRS VM/Host Rules
275 | 276 | 277 |
NameTypeEnabledVM GroupVMHost Group
VM not on HostShouldNotRunOnFalseTest_VMsProd_Hosts
VM_to_HostShouldRunOnFalseTest_VMsProd_Hosts
278 |
1.2.3.2.3 DRS Rules
279 | 280 | 281 |
NameTypeEnabledMandatoryVirtual Machines
Test_VMsVMAntiAffinityTrueFalseTest_1, Test_2
TestVMAffinityFalseFalseTest_1, Test_2
282 |

1.2.3.3 Update Manager Baselines

283 | 284 | 285 | 286 |
NameDescriptionTypeTarget TypeLast Update TimeNumber of Patches
Critical Host Patches (Predefined)A predefined baseline for all critical patches for HostsPatchHost28/02/2017 9:35:00 PM71
Non-Critical Host Patches (Predefined)A predefined baseline for all non-critical patches for HostsPatchHost28/02/2017 9:35:00 PM236
VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)PatchHost23/05/2018 9:28:38 AM1
287 |

1.2.3.4 Permissions

The following table details the permissions assigned to cluster VSAN-Cluster.

288 | 289 | 290 | 291 | 292 | 293 | 294 |
User/GroupIs Group?RoleDefined InPropagate
VSPHERE.LOCAL\SolutionUsersTrueReadOnlyVSAN-ClusterFalse
VSPHERE.LOCAL\vpxd-extension-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vpxd-0cd516db-cbaa-434b-8b6f-90452748e378FalseAdminDatacentersTrue
VSPHERE.LOCAL\vsphere-webclient-0cd516db-cbaa-434b-8b6f-90452748e378FalseReadOnlyDatacentersTrue
VSPHERE.LOCAL\AdministratorFalseAdminDatacentersTrue
VSPHERE.LOCAL\AdministratorsTrueAdminDatacentersTrue
295 |
296 |

1.3 Resource Pools

The following section provides information on the configuration of resource pools.

297 |
NameResources
IdResourcePool-resgroup-35
ParentNew Cluster
CPU Shares LevelNormal
Number of CPU Shares4000
CPU Reservation0 MHz
CPU Expandable ReservationTrue
CPU LimitUnlimited
Memory Shares LevelNormal
Number of Memory Shares163840
Memory Reservation0 GB
Memory Expandable ReservationTrue
Memory LimitUnlimited
298 |

299 |

300 |
NameTesting
IdResourcePool-resgroup-62
ParentResources
CPU Shares LevelNormal
Number of CPU Shares4000
CPU Reservation0 MHz
CPU Expandable ReservationTrue
CPU Limit1000 MHz
Memory Shares LevelNormal
Number of Memory Shares163840
Memory Reservation0 GB
Memory Expandable ReservationTrue
Memory LimitUnlimited
301 |

302 |

303 |
NameResources
IdResourcePool-resgroup-28
ParentTest Cluster
CPU Shares LevelNormal
Number of CPU Shares4000
CPU Reservation0 MHz
CPU Expandable ReservationTrue
CPU LimitUnlimited
Memory Shares LevelNormal
Number of Memory Shares163840
Memory Reservation0 GB
Memory Expandable ReservationTrue
Memory LimitUnlimited
304 |

305 |

306 |
NameResources
IdResourcePool-resgroup-8
ParentVSAN-Cluster
CPU Shares LevelNormal
Number of CPU Shares4000
CPU Reservation6612 MHz
CPU Expandable ReservationTrue
CPU Limit6612 MHz
Memory Shares LevelNormal
Number of Memory Shares163840
Memory Reservation0.70 GB
Memory Expandable ReservationTrue
Memory Limit0.70 GB
307 |
308 |

1.4 Hosts

The following section provides information on the configuration of VMware ESXi hosts.

309 | 310 | 311 | 312 |
NameVersionBuildParentConnection StateCPU Usage MHzMemory Usage GBVM Count
192.168.1.1116.5.05969303VSAN-ClusterConnected1703.331
192.168.1.1126.5.05969303VSAN-ClusterConnected1353.331
192.168.1.1136.5.05969303VSAN-ClusterConnected1263.331
313 |

1.4.1 192.168.1.111

1.4.1.1 Hardware

The following section provides information on the host hardware configuration of 192.168.1.111.

314 |
Name192.168.1.111
ParentVSAN-Cluster
ManufacturerVMware, Inc.
ModelVMware Virtual Platform
Serial Number 
Asset Tag 
Processor TypeIntel(R) Xeon(R) CPU D-1528 @ 1.90GHz
HyperThreadingFalse
CPU Socket Count2
CPU Core Count2
CPU Thread Count2
CPU Speed1.9 GHz
Memory6 GB
NUMA Nodes1
NIC Count2
Maximum EVC Modeintel-broadwell
Power Management PolicyHigh Performance
Scratch Location/tmp/scratch
Bios Version6.00
Bios Release Date28/07/2017 12:00:00 AM
ESXi Version6.5.0
ESXi Build5969303
Uptime Days74.7
315 |
1.4.1.1.1 Boot Devices
316 |
Host192.168.1.111
Devicenaa.6000c29e041dd7e2fea7da7634a3eaf0
Boot Typelocal
VendorVMware
ModelVirtual disk
Size MB2048
Is SASfalse
Is SSDfalse
Is USBfalse
317 |
1.4.1.1.2 PCI Devices
318 | 319 | 320 | 321 | 322 |
VMkernel NamePCI AddressDevice ClassDevice NameVendor NameSlot Description
vmhba00000:13:00.0Serial Attached SCSI controllerPVSCSI SCSI ControllerVMware Inc.SCSI0
vmhba10000:00:07.1IDE interfacePIIX4 for 430TX/440BX/MX IDE ControllerIntel Corporation 
vmnic00000:03:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet0
vmnic10000:0b:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet1
323 |

1.4.1.2 System

The following section provides information on the host system configuration of 192.168.1.111.
1.4.1.2.1 Licensing
324 | 325 | 326 |
License TypeLicense Key
VMware vSphere 6 Enterprise Plus*****-*****-*****-079HM-29JHN
327 |
1.4.1.2.2 Host Profile
328 | 329 | 330 |
NameDescription
Host Profile TestHost Profile for doco report
331 |
1.4.1.2.3 Image Profile
332 | 333 | 334 |
Image ProfileVendorInstallation Date
(Updated) ESXi-6.5.0-4564106-standardVMware, Inc.28/02/2017 9:16:02 PM
335 |
1.4.1.2.4 Time Configuration
336 | 337 | 338 |
Time ZoneNTP Service RunningNTP Server(s)
UTCFalse0.au.pool.ntp.org, 1.au.pool.ntp.org
339 |
1.4.1.2.5 Syslog Configuration
340 | 341 | 342 |
SysLog ServerPort
192.168.1.110 
343 |
1.4.1.2.6 Update Manager Compliance
344 | 345 | 346 | 347 | 348 |
BaselineStatus
VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)NotCompliant
Non-Critical Host Patches (Predefined)NotCompliant
Critical Host Patches (Predefined)NotCompliant
349 |

1.4.1.3 Storage

The following section provides information on the host storage configuration of 192.168.1.111.
1.4.1.3.1 Datastores
350 | 351 |
NameTypeVersionTotal Capacity GBUsed Capacity GBFree Space GB% Used
vsanDatastorevsan 23.982.6321.3410.98
352 |

1.4.1.4 Network

The following section provides information on the host network configuration of 192.168.1.111.

353 |
VMHost192.168.1.111
Virtual SwitchesvSwitch0
VMKernel Adaptersvmk0
Physical Adaptersvmnic0, vmnic1
VMKernel Gateway192.168.1.1
IPv6 EnabledTrue
VMKernel IPv6 Gateway 
DNS Servers192.168.1.10, 8.8.8.8
Host Namevesxi65-1
Domain Name 
Search Domainlab.local
354 |
1.4.1.4.1 Physical Adapters
The following table details the physical network adapters for 192.168.1.111.

355 | 356 | 357 | 358 |
Device NameMAC AddressBitrate/SecondFull DuplexWake on LAN Support
vmnic000:0c:29:57:f3:9810000TrueFalse
vmnic100:0c:29:57:f3:a210000TrueFalse
359 |
1.4.1.4.2 Cisco Discovery Protocol
360 | 361 | 362 | 363 |
NICConnectedSwitchHardware PlatformPort ID
vmnic0Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
vmnic1Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
364 |
1.4.1.4.3 VMkernel Adapters
The following table details the VMkernel adapters for 192.168.1.111

365 |
Device Namevmk0
Network LabelManagement Network
MTU1500
MAC Address00:0c:29:57:f3:98
IP Address192.168.1.111
Subnet Mask255.255.255.0
vMotion TrafficFalse
FT LoggingFalse
Management TrafficTrue
vSAN TrafficTrue
366 |
1.4.1.4.4 Standard Virtual Switches
The following sections detail the standard virtual switch configuration for 192.168.1.111.

367 |
NamevSwitch0
MTU1500
Number of Ports1536
Number of Ports Available1528
Load BalancingLoadBalanceSrcId
Failover DetectionLinkStatus
Notify SwitchesTrue
Failback EnabledTrue
Active NICsvmnic0
Standby NICs 
Unused NICs 
368 |
1.4.1.4.5 Virtual Switch Security Policy
369 | 370 |
vSwitchMAC Address ChangesForged TransmitsPromiscuous Mode
vSwitch0TrueTrueFalse
371 |
1.4.1.4.6 Virtual Switch NIC Teaming
372 | 373 |
vSwitchLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0LoadBalanceSrcIdLinkStatusTrueTruevmnic0  
374 |
1.4.1.4.7 Virtual Port Groups
375 | 376 | 377 |
vSwitchPortgroupVLAN ID
vSwitch0Management Network0
vSwitch0VM Network0
378 |
1.4.1.4.8 Virtual Port Group Security Policy
379 | 380 | 381 |
vSwitchPortgroupMAC ChangesForged TransmitsPromiscuous Mode
vSwitch0VM NetworkTrueTrueFalse
vSwitch0Management NetworkTrueTrueFalse
382 |
1.4.1.4.9 Virtual Port Group NIC Teaming
383 | 384 | 385 |
vSwitchPortgroupLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0VM NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
vSwitch0Management NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
386 |

1.4.1.5 Security

The following section provides information on the host security configuration of 192.168.1.111.
1.4.1.5.1 Lockdown Mode
387 |
Lockdown ModeTrue
388 |
1.4.1.5.2 Services
389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 |
NameLabelPolicyRunningRequired
DCUIDirect Console UIonTrueFalse
lbtdLoad-Based Teaming DaemononTrueFalse
lwsmdActive Directory ServiceonTrueFalse
ntpdNTP DaemonoffFalseFalse
pcscdPC/SC Smart Card DaemonoffFalseFalse
sfcbd-watchdogCIM ServeronFalseFalse
snmpdSNMP ServeronFalseFalse
TSMESXi ShellonTrueFalse
TSM-SSHSSHonTrueFalse
vmsyslogdSyslog ServeronTrueTrue
vmware-fdmvSphere High Availability AgentonTrueFalse
vpxaVMware vCenter AgentonTrueFalse
xorgX.Org ServeronFalseFalse
403 |
1.4.1.5.3 Authentication Services
404 | 405 | 406 |
DomainDomain MembershipTrusted Domains
LAB.LOCALOk 
407 |

1.4.2 192.168.1.112

1.4.2.1 Hardware

The following section provides information on the host hardware configuration of 192.168.1.112.

408 |
Name192.168.1.112
ParentVSAN-Cluster
ManufacturerVMware, Inc.
ModelVMware Virtual Platform
Serial Number 
Asset Tag 
Processor TypeIntel(R) Xeon(R) CPU D-1528 @ 1.90GHz
HyperThreadingFalse
CPU Socket Count2
CPU Core Count2
CPU Thread Count2
CPU Speed1.9 GHz
Memory6 GB
NUMA Nodes1
NIC Count2
Maximum EVC Modeintel-broadwell
Power Management PolicyHigh Performance
Scratch Location/tmp/scratch
Bios Version6.00
Bios Release Date28/07/2017 12:00:00 AM
ESXi Version6.5.0
ESXi Build5969303
Uptime Days74.7
409 |
1.4.2.1.1 Boot Devices
410 |
Host192.168.1.112
Devicenaa.6000c29a60075960e1284ed911495826
Boot Typelocal
VendorVMware
ModelVirtual disk
Size MB2048
Is SASfalse
Is SSDfalse
Is USBfalse
411 |
1.4.2.1.2 PCI Devices
412 | 413 | 414 | 415 | 416 |
VMkernel NamePCI AddressDevice ClassDevice NameVendor NameSlot Description
vmhba00000:13:00.0Serial Attached SCSI controllerPVSCSI SCSI ControllerVMware Inc.SCSI0
vmhba10000:00:07.1IDE interfacePIIX4 for 430TX/440BX/MX IDE ControllerIntel Corporation 
vmnic00000:03:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet0
vmnic10000:0b:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet1
417 |

1.4.2.2 System

The following section provides information on the host system configuration of 192.168.1.112.
1.4.2.2.1 Licensing
418 | 419 | 420 |
License TypeLicense Key
VMware vSphere 6 Enterprise Plus*****-*****-*****-079HM-29JHN
421 |
1.4.2.2.2 Host Profile
422 | 423 | 424 |
NameDescription
Host Profile TestHost Profile for doco report
425 |
1.4.2.2.3 Image Profile
426 | 427 | 428 |
Image ProfileVendorInstallation Date
(Updated) ESXi-6.5.0-4564106-standardVMware, Inc.28/02/2017 9:16:28 PM
429 |
1.4.2.2.4 Time Configuration
430 | 431 | 432 |
Time ZoneNTP Service RunningNTP Server(s)
UTCFalse0.au.pool.ntp.org, 1.au.pool.ntp.org
433 |
1.4.2.2.5 Syslog Configuration
434 | 435 | 436 |
SysLog ServerPort
192.168.1.110 
437 |
1.4.2.2.6 Update Manager Compliance
438 | 439 | 440 | 441 | 442 |
BaselineStatus
VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)NotCompliant
Non-Critical Host Patches (Predefined)NotCompliant
Critical Host Patches (Predefined)NotCompliant
443 |

1.4.2.3 Storage

The following section provides information on the host storage configuration of 192.168.1.112.
1.4.2.3.1 Datastores
444 | 445 |
NameTypeVersionTotal Capacity GBUsed Capacity GBFree Space GB% Used
vsanDatastorevsan 23.982.6321.3410.98
446 |

1.4.2.4 Network

The following section provides information on the host network configuration of 192.168.1.112.

447 |
VMHost192.168.1.112
Virtual SwitchesvSwitch0
VMKernel Adaptersvmk0
Physical Adaptersvmnic0, vmnic1
VMKernel Gateway192.168.1.1
IPv6 EnabledTrue
VMKernel IPv6 Gateway 
DNS Servers192.168.1.10, 8.8.8.8
Host Namevesxi65-2
Domain Name 
Search Domainlab.local
448 |
1.4.2.4.1 Physical Adapters
The following table details the physical network adapters for 192.168.1.112.

449 | 450 | 451 | 452 |
Device NameMAC AddressBitrate/SecondFull DuplexWake on LAN Support
vmnic000:0c:29:0a:c0:5710000TrueFalse
vmnic100:0c:29:0a:c0:6110000TrueFalse
453 |
1.4.2.4.2 Cisco Discovery Protocol
454 | 455 | 456 | 457 |
NICConnectedSwitchHardware PlatformPort ID
vmnic0Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
vmnic1Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
458 |
1.4.2.4.3 VMkernel Adapters
The following table details the VMkernel adapters for 192.168.1.112

459 |
Device Namevmk0
Network LabelManagement Network
MTU1500
MAC Address00:0c:29:0a:c0:57
IP Address192.168.1.112
Subnet Mask255.255.255.0
vMotion TrafficFalse
FT LoggingFalse
Management TrafficTrue
vSAN TrafficTrue
460 |
1.4.2.4.4 Standard Virtual Switches
The following sections detail the standard virtual switch configuration for 192.168.1.112.

461 |
NamevSwitch0
MTU1500
Number of Ports1536
Number of Ports Available1528
Load BalancingLoadBalanceSrcId
Failover DetectionLinkStatus
Notify SwitchesTrue
Failback EnabledTrue
Active NICsvmnic0
Standby NICs 
Unused NICs 
462 |
1.4.2.4.5 Virtual Switch Security Policy
463 | 464 |
vSwitchMAC Address ChangesForged TransmitsPromiscuous Mode
vSwitch0TrueTrueFalse
465 |
1.4.2.4.6 Virtual Switch NIC Teaming
466 | 467 |
vSwitchLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0LoadBalanceSrcIdLinkStatusTrueTruevmnic0  
468 |
1.4.2.4.7 Virtual Port Groups
469 | 470 | 471 |
vSwitchPortgroupVLAN ID
vSwitch0Management Network0
vSwitch0VM Network0
472 |
1.4.2.4.8 Virtual Port Group Security Policy
473 | 474 | 475 |
vSwitchPortgroupMAC ChangesForged TransmitsPromiscuous Mode
vSwitch0VM NetworkTrueTrueFalse
vSwitch0Management NetworkTrueTrueFalse
476 |
1.4.2.4.9 Virtual Port Group NIC Teaming
477 | 478 | 479 |
vSwitchPortgroupLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0VM NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
vSwitch0Management NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
480 |

1.4.2.5 Security

The following section provides information on the host security configuration of 192.168.1.112.
1.4.2.5.1 Lockdown Mode
481 |
Lockdown ModeFalse
482 |
1.4.2.5.2 Services
483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 |
NameLabelPolicyRunningRequired
DCUIDirect Console UIonTrueFalse
lbtdLoad-Based Teaming DaemononTrueFalse
lwsmdActive Directory ServiceonTrueFalse
ntpdNTP DaemonoffFalseFalse
pcscdPC/SC Smart Card DaemonoffFalseFalse
sfcbd-watchdogCIM ServeronFalseFalse
snmpdSNMP ServeronFalseFalse
TSMESXi ShellonTrueFalse
TSM-SSHSSHonTrueFalse
vmsyslogdSyslog ServeronTrueTrue
vmware-fdmvSphere High Availability AgentonTrueFalse
vpxaVMware vCenter AgentonTrueFalse
xorgX.Org ServeronFalseFalse
497 |
1.4.2.5.3 Authentication Services
498 | 499 | 500 |
DomainDomain MembershipTrusted Domains
LAB.LOCALOk 
501 |

1.4.3 192.168.1.113

1.4.3.1 Hardware

The following section provides information on the host hardware configuration of 192.168.1.113.

502 |
Name192.168.1.113
ParentVSAN-Cluster
ManufacturerVMware, Inc.
ModelVMware Virtual Platform
Serial Number 
Asset Tag 
Processor TypeIntel(R) Xeon(R) CPU D-1528 @ 1.90GHz
HyperThreadingFalse
CPU Socket Count2
CPU Core Count2
CPU Thread Count2
CPU Speed1.9 GHz
Memory6 GB
NUMA Nodes1
NIC Count2
Maximum EVC Modeintel-broadwell
Power Management PolicyHigh Performance
Scratch Location/tmp/scratch
Bios Version6.00
Bios Release Date28/07/2017 12:00:00 AM
ESXi Version6.5.0
ESXi Build5969303
Uptime Days74.7
503 |
1.4.3.1.1 Boot Devices
504 |
Host192.168.1.113
Devicenaa.6000c2994ed56a57b2049108de88effd
Boot Typelocal
VendorVMware
ModelVirtual disk
Size MB2048
Is SASfalse
Is SSDfalse
Is USBfalse
505 |
1.4.3.1.2 PCI Devices
506 | 507 | 508 | 509 | 510 |
VMkernel NamePCI AddressDevice ClassDevice NameVendor NameSlot Description
vmhba00000:13:00.0Serial Attached SCSI controllerPVSCSI SCSI ControllerVMware Inc.SCSI0
vmhba10000:00:07.1IDE interfacePIIX4 for 430TX/440BX/MX IDE ControllerIntel Corporation 
vmnic00000:03:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet0
vmnic10000:0b:00.0Ethernet controllervmxnet3 Virtual Ethernet ControllerVMware Inc.Ethernet1
511 |

1.4.3.2 System

The following section provides information on the host system configuration of 192.168.1.113.
1.4.3.2.1 Licensing
512 | 513 | 514 |
License TypeLicense Key
VMware vSphere 6 Enterprise Plus*****-*****-*****-079HM-29JHN
515 |
1.4.3.2.2 Host Profile
516 | 517 | 518 |
NameDescription
Host Profile TestHost Profile for doco report
519 |
1.4.3.2.3 Image Profile
520 | 521 | 522 |
Image ProfileVendorInstallation Date
(Updated) ESXi-6.5.0-4564106-standardVMware, Inc.28/02/2017 9:17:02 PM
523 |
1.4.3.2.4 Time Configuration
524 | 525 | 526 |
Time ZoneNTP Service RunningNTP Server(s)
UTCFalse0.au.pool.ntp.org, 1.au.pool.ntp.org
527 |
1.4.3.2.5 Syslog Configuration
528 | 529 | 530 |
SysLog ServerPort
192.168.1.110 
531 |
1.4.3.2.6 Update Manager Compliance
532 | 533 | 534 | 535 | 536 |
BaselineStatus
VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)NotCompliant
Non-Critical Host Patches (Predefined)NotCompliant
Critical Host Patches (Predefined)NotCompliant
537 |

1.4.3.3 Storage

The following section provides information on the host storage configuration of 192.168.1.113.
1.4.3.3.1 Datastores
538 | 539 |
NameTypeVersionTotal Capacity GBUsed Capacity GBFree Space GB% Used
vsanDatastorevsan 23.982.6321.3410.98
540 |

1.4.3.4 Network

The following section provides information on the host network configuration of 192.168.1.113.

541 |
VMHost192.168.1.113
Virtual SwitchesvSwitch0
VMKernel Adaptersvmk0
Physical Adaptersvmnic0, vmnic1
VMKernel Gateway192.168.1.1
IPv6 EnabledTrue
VMKernel IPv6 Gateway 
DNS Servers192.168.1.10, 8.8.8.8
Host Namevesxi65-3
Domain Name 
Search Domainlab.local
542 |
1.4.3.4.1 Physical Adapters
The following table details the physical network adapters for 192.168.1.113.

543 | 544 | 545 | 546 |
Device NameMAC AddressBitrate/SecondFull DuplexWake on LAN Support
vmnic000:0c:29:a2:26:0410000TrueFalse
vmnic100:0c:29:a2:26:0e10000TrueFalse
547 |
1.4.3.4.2 Cisco Discovery Protocol
548 | 549 | 550 | 551 |
NICConnectedSwitchHardware PlatformPort ID
vmnic0Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
vmnic1Truedca5f4a56b91Cisco SG200-26P (PID:SLM2024PT)-VSDgi1
552 |
1.4.3.4.3 VMkernel Adapters
The following table details the VMkernel adapters for 192.168.1.113

553 |
Device Namevmk0
Network LabelManagement Network
MTU1500
MAC Address00:0c:29:a2:26:04
IP Address192.168.1.113
Subnet Mask255.255.255.0
vMotion TrafficFalse
FT LoggingFalse
Management TrafficTrue
vSAN TrafficTrue
554 |
1.4.3.4.4 Standard Virtual Switches
The following sections detail the standard virtual switch configuration for 192.168.1.113.

555 |
NamevSwitch0
MTU1500
Number of Ports1536
Number of Ports Available1528
Load BalancingLoadBalanceSrcId
Failover DetectionLinkStatus
Notify SwitchesTrue
Failback EnabledTrue
Active NICsvmnic0
Standby NICs 
Unused NICs 
556 |
1.4.3.4.5 Virtual Switch Security Policy
557 | 558 |
vSwitchMAC Address ChangesForged TransmitsPromiscuous Mode
vSwitch0TrueTrueFalse
559 |
1.4.3.4.6 Virtual Switch NIC Teaming
560 | 561 |
vSwitchLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0LoadBalanceSrcIdLinkStatusTrueTruevmnic0  
562 |
1.4.3.4.7 Virtual Port Groups
563 | 564 | 565 |
vSwitchPortgroupVLAN ID
vSwitch0Management Network0
vSwitch0VM Network0
566 |
1.4.3.4.8 Virtual Port Group Security Policy
567 | 568 | 569 |
vSwitchPortgroupMAC ChangesForged TransmitsPromiscuous Mode
vSwitch0VM NetworkTrueTrueFalse
vSwitch0Management NetworkTrueTrueFalse
570 |
1.4.3.4.9 Virtual Port Group NIC Teaming
571 | 572 | 573 |
vSwitchPortgroupLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive NICsStandby NICsUnused NICs
vSwitch0VM NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
vSwitch0Management NetworkLoadBalanceSrcIdLinkStatusTrueTruevmnic0  
574 |

1.4.3.5 Security

The following section provides information on the host security configuration of 192.168.1.113.
1.4.3.5.1 Lockdown Mode
575 |
Lockdown ModeFalse
576 |
1.4.3.5.2 Services
577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 |
NameLabelPolicyRunningRequired
DCUIDirect Console UIonTrueFalse
lbtdLoad-Based Teaming DaemononTrueFalse
lwsmdActive Directory ServiceonTrueFalse
ntpdNTP DaemonoffFalseFalse
pcscdPC/SC Smart Card DaemonoffFalseFalse
sfcbd-watchdogCIM ServeronFalseFalse
snmpdSNMP ServeronFalseFalse
TSMESXi ShellonTrueFalse
TSM-SSHSSHonTrueFalse
vmsyslogdSyslog ServeronTrueTrue
vmware-fdmvSphere High Availability AgentonTrueFalse
vpxaVMware vCenter AgentonTrueFalse
xorgX.Org ServeronFalseFalse
591 |
1.4.3.5.3 Authentication Services
592 | 593 | 594 |
DomainDomain MembershipTrusted Domains
LAB.LOCALOk 
595 |
596 |

1.5 Distributed Virtual Switches

The following section provides information on the Distributed Virtual Switch configuration.

597 | 598 | 599 |
VDSwitchDatacenterManufacturerVersionNumber of UplinksNumber of PortsHost Count
DSwitchDatacenterVMware, Inc.6.5.04203
DSwitch 1DatacenterVMware, Inc.5.5.0280
600 |

1.5.1 DSwitch

1.5.1.1 General Properties

601 |
NameDSwitch
DatacenterDatacenter
ManufacturerVMware, Inc.
Version6.5.0
Number of Uplinks4
Number of Ports20
MTU1500
Network I/O Control EnabledFalse
Discovery ProtocolCDP
Discovery Protocol OperationListen
Connected Hosts192.168.1.111, 192.168.1.112, 192.168.1.113
602 |

1.5.1.2 Uplinks

603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 |
VDSwitchVM HostUplink NamePhysical Network AdapterUplink Port Group
DSwitch192.168.1.111Uplink 1 DSwitch-DVUplinks-21
DSwitch192.168.1.111Uplink 2vmnic1DSwitch-DVUplinks-21
DSwitch192.168.1.111Uplink 3 DSwitch-DVUplinks-21
DSwitch192.168.1.111Uplink 4 DSwitch-DVUplinks-21
DSwitch192.168.1.112Uplink 1 DSwitch-DVUplinks-21
DSwitch192.168.1.112Uplink 2vmnic1DSwitch-DVUplinks-21
DSwitch192.168.1.112Uplink 3 DSwitch-DVUplinks-21
DSwitch192.168.1.112Uplink 4 DSwitch-DVUplinks-21
DSwitch192.168.1.113Uplink 1 DSwitch-DVUplinks-21
DSwitch192.168.1.113Uplink 2vmnic1DSwitch-DVUplinks-21
DSwitch192.168.1.113Uplink 3 DSwitch-DVUplinks-21
DSwitch192.168.1.113Uplink 4 DSwitch-DVUplinks-21
616 |

1.5.1.3 Security

617 | 618 |
VDSwitchAllow PromiscuousForged TransmitsMAC Address Changes
DSwitchFalseFalseFalse
619 |

1.5.1.4 Traffic Shaping

620 | 621 | 622 |
VDSwitchDirectionEnabledAverage Bandwidth (kbit/s)Peak Bandwidth (kbit/s)Burst Size (KB)
DSwitchInFalse100000000100000000104857600
DSwitchOutFalse100000000100000000104857600
623 |

1.5.1.5 Port Groups

624 | 625 | 626 |
VDSwitchPortgroupDatacenterVLAN ConfigurationPort BindingNumber of Ports
DSwitchDPortGroupDatacenterVLAN 8Static8
DSwitchDSwitch-DVUplinks-21DatacenterVLAN Trunk [0-4094]Static12
627 |

1.5.1.6 Port Group Security

628 | 629 | 630 |
VDSwitchPort GroupAllow PromiscuousForged TransmitsMAC Address Changes
DSwitchDSwitch-DVUplinks-21FalseTrueFalse
DSwitchDPortGroupFalseFalseFalse
631 |

1.5.1.7 Port Group NIC Teaming

632 | 633 | 634 |
VDSwitchPort GroupLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive UplinksStandby UplinksUnused Uplinks
DSwitchDPortGroupLoadBalanceSrcIdLinkStatusTrueTrueUplink 1
Uplink 2
Uplink 3
Uplink 4
  
DSwitchDSwitch-DVUplinks-21LoadBalanceSrcIdLinkStatusTrueTrue  Uplink 1
Uplink 2
Uplink 3
Uplink 4
635 |

1.5.1.8 Private VLANs

636 | 637 | 638 | 639 |
Primary VLAN IDPrivate VLAN TypeSecondary VLAN ID
1Promiscuous1
1Isolated2
1Community3
640 |

1.5.2 DSwitch 1

1.5.2.1 General Properties

641 |
NameDSwitch 1
DatacenterDatacenter
ManufacturerVMware, Inc.
Version5.5.0
Number of Uplinks2
Number of Ports8
MTU1500
Network I/O Control EnabledFalse
Discovery ProtocolCDP
Discovery Protocol OperationListen
Connected Hosts 
642 |

1.5.2.2 Security

643 | 644 |
VDSwitchAllow PromiscuousForged TransmitsMAC Address Changes
DSwitch 1FalseFalseFalse
645 |

1.5.2.3 Traffic Shaping

646 | 647 | 648 |
VDSwitchDirectionEnabledAverage Bandwidth (kbit/s)Peak Bandwidth (kbit/s)Burst Size (KB)
DSwitch 1InFalse100000000100000000104857600
DSwitch 1OutFalse100000000100000000104857600
649 |

1.5.2.4 Port Groups

650 | 651 | 652 |
VDSwitchPortgroupDatacenterVLAN ConfigurationPort BindingNumber of Ports
DSwitch 1DPortGroup 1Datacenter Static8
DSwitch 1DSwitch 1-DVUplinks-24DatacenterVLAN Trunk [0-4094]Static0
653 |

1.5.2.5 Port Group Security

654 | 655 | 656 |
VDSwitchPort GroupAllow PromiscuousForged TransmitsMAC Address Changes
DSwitch 1DPortGroup 1FalseFalseFalse
DSwitch 1DSwitch 1-DVUplinks-24FalseTrueFalse
657 |

1.5.2.6 Port Group NIC Teaming

658 | 659 | 660 |
VDSwitchPort GroupLoad BalancingFailover DetectionNotify SwitchesFailback EnabledActive UplinksStandby UplinksUnused Uplinks
DSwitch 1DPortGroup 1LoadBalanceSrcIdLinkStatusTrueTrueUplink 1
Uplink 2
  
DSwitch 1DSwitch 1-DVUplinks-24LoadBalanceSrcIdLinkStatusTrueTrue  Uplink 1
Uplink 2
661 |
662 |

1.6 vSAN

The following section provides information on the vSAN configuration.

1.6.1 VSAN-Cluster

663 |
NameVSAN-Cluster
TypeAll-Flash
Version6.6.1
Number of Hosts3
Stretched ClusterFalse
Disk Format Version5
Total Number of Disks6
Total Number of Disk Groups3
Disk Claim ModeManual
Deduplication and CompressionFalse
Encryption EnabledFalse
Health Check EnabledTrue
HCL Last Updated5/08/2018 5:03:21 AM
664 |

1.7 Storage

The following section provides information on the VMware vSphere storage configuration.

665 | 666 |
NameTypeTotal Capacity GBUsed Capacity GBFree Space GB% UsedHost Count
vsanDatastorevsan23.982.6321.3410.983
667 |

1.7.1 Datastore Specifications

668 | 669 |
NameDatacenterTypeVersionStateSIOC EnabledCongestion Threshold ms
vsanDatastoreDatacentervsan AvailableFalse 
670 |
671 |

1.8 Virtual Machines

The following section provides detailed information on Virtual Machines.

1.8.1 Test_1

672 |
NameTest_1
Operating System 
Hardware Versionv13
Power StatePoweredOff
VM Tools StatustoolsNotInstalled
Host192.168.1.112
Parent FolderDiscovered virtual machine
Parent Resource PoolResources
vCPUs1
Cores per Socket1
Total vCPUs1
CPU ResourcesNormal / 1000
CPU Reservation0
CPU Limit0 MHz
Memory Allocation4 GB
Memory ResourcesNormal / 40960
673 |

1.8.2 Test_2

674 |
NameTest_2
Operating System 
Hardware Versionv13
Power StatePoweredOff
VM Tools StatustoolsNotInstalled
Host192.168.1.111
Parent Foldervm
Parent Resource PoolResources
vCPUs1
Cores per Socket1
Total vCPUs1
CPU ResourcesNormal / 1000
CPU Reservation0
CPU Limit0 MHz
Memory Allocation4 GB
Memory ResourcesNormal / 40960
675 |

1.8.3 Test_3

676 |
NameTest_3
Operating System 
Hardware Versionv13
Power StatePoweredOff
VM Tools Status 
Host192.168.1.113
Parent Foldervm
Parent Resource PoolResources
vCPUs1
Cores per Socket1
Total vCPUs1
CPU ResourcesNormal / 1000
CPU Reservation0
CPU Limit0 MHz
Memory Allocation4 GB
Memory ResourcesNormal / 40960
677 |

1.8.4 VM Snapshots

678 | 679 |
Virtual MachineNameDescriptionDays Old
Test_2VM Snapshot 3%252f9%252f2018 3:00 PM UTC+11:00 149
680 |
681 |

1.9 VMware Update Manager

The following section provides information on VMware Update Manager.

1.9.1 Baselines

682 | 683 | 684 | 685 |
NameDescriptionTypeTarget TypeLast Update TimeNumber of Patches
Critical Host Patches (Predefined)A predefined baseline for all critical patches for HostsPatchHost28/02/2017 9:35:00 PM71
Non-Critical Host Patches (Predefined)A predefined baseline for all non-critical patches for HostsPatchHost28/02/2017 9:35:00 PM236
VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)VMware ESXi 6.5.0 U2 (vSAN 6.6.1 Update 2, build 8294253)PatchHost23/05/2018 9:28:38 AM1
686 |
687 | --------------------------------------------------------------------------------