🔍 Comprehensive assessment tool for ESXi host upgrade readiness with detailed reporting and recommendations!
🏗️ Comprehensive Analysis
- CPU compatibility verification
- Storage capacity assessment
- Upgrade path determination
- System readiness evaluation
📊 Advanced Reporting
- Interactive HTML reporting with filtering
- Detailed CSV export for data analysis
- Clear status categorization
- Actionable upgrade recommendations
🔄 Efficient Processing
- Parallel host processing
- Configurable concurrency
- Progress tracking
- Detailed logging and error handling
🛡️ Version Intelligence
- Precise version and build tracking
- Target version specification
- Upgrade path validation
- Already up-to-date detection
Before you begin your upgrade assessment, ensure you have:
- 💻 PowerShell 7 or higher
- 🔌 VMware PowerCLI module installed
- 🔑 ESXi host credentials with administrative access
- 📄 (Optional) CSV file with host inventory
Click to expand PowerCLI setup instructions
# Install PowerShell 7+ via winget
winget install Microsoft.PowerShell# Install VMware PowerCLI module if not already installed
Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Force# Set PowerCLI configuration
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false -Confirm:$falseCreate a config.json file in the same directory as the script:
Click to see full config.json template
{
"Username": "administrator@vsphere.local",
"Password": "YourSecurePassword",
"TargetESXiVersion": "8.0.3",
"MinimumRequiredSpaceGB": 10,
"MinimumBootbankFreePercentage": 90
}# Check specific servers
.\ESXi-Upgrade-ReadinessCheck.ps1 -Servers "esxi01.domain.com","esxi02.domain.com"
# Check servers from CSV file with parallel processing
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv" -Parallel -MaxConcurrentJobs 10# Show help and parameter information
.\ESXi-Upgrade-ReadinessCheck.ps1 -Help
# Check specific ESXi hosts
.\ESXi-Upgrade-ReadinessCheck.ps1 -Servers "esxi01.domain.com","esxi02.domain.com"
# Process hosts from a CSV file
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv"
# Specify output locations for CSV and HTML report
.\ESXi-Upgrade-ReadinessCheck.ps1 -Servers "esxi01.domain.com" -OutputCsv "results.csv" -ReportPath "report.html"
# Process multiple hosts in parallel with custom concurrency
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv" -Parallel -MaxConcurrentJobs 10
# Specify target ESXi version to check compatibility against
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv" -UpgradeVersion "8.0.3"
# Filter servers by name match (e.g., only include hosts with "ESX" in their name)
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv" -NameMatch "ESX"
# Combine filters, parallelism, and output control
.\ESXi-Upgrade-ReadinessCheck.ps1 -ServerListFile "servers.csv" -NameMatch "CHQ" -Parallel -MaxConcurrentJobs 8 -OutputCsv "filtered-results.csv" -ReportPath "filtered-report.html"The script produces two main outputs:
- Filterable host list
- Status categorization
- Detailed host information
- Visual status indicators
- Upgrade recommendations
- Complete assessment data
- Sortable and filterable in Excel
- Perfect for inventory management
- Integration with other systems
Hosts are categorized for easy assessment:
- ✅ Ready for Upgrade: Meets all requirements
- 🔄 Already Up-To-Date: Running target version
- ❌ CPU Incompatible: CPU not supported
⚠️ Storage Issues: Insufficient space- 🔄 Requires Intermediate Upgrade: Multi-step upgrade needed
- ❓ Multiple Issues: Multiple requirements not met
⚠️ Failed to Check: Connection or assessment error
🔌 Connection Issues
- ✓ Verify hostname/IP is correct
- ✓ Check network connectivity
- ✓ Verify credentials
- ✓ Ensure ESXi host is online
- ✓ Check firewall rules
📈 Performance Issues
- ✓ Reduce MaxConcurrentJobs
- ✓ Check host resource utilization
- ✓ Process smaller batches of hosts
📋 CSV Import Issues
- ✓ Verify CSV format
- ✓ Ensure "Host Name" column exists
- ✓ Check for valid ESXi hostnames
- 🔒 Store credentials securely
- 🔑 Use least-privilege accounts
- 📝 Review logs regularly
- 🔐 Don't hardcode credentials in script
This project is made available under the MIT License.
Have questions or feedback? Found a bug? Please open an issue in the repository.
Made with ❤️ for VMware administrators
⭐ Star this repository if you find it helpful! ⭐
