Files
Hyper-V-Report/README.md
Federico Lillacci 28ca3732f3 Update README.md
2025-10-27 06:19:19 +01:00

129 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hyper-V Report Script Documentation
## Overview
This PowerShell script automates the collection of detailed information about a Hyper-V environment, including hosts, virtual machines, snapshots, replication status, VHDX files, network adapters, virtual switches, and cluster-specific metrics. It generates a customizable HTML report and can optionally send it via email using MS Graph or MailKit.
The script supports both standalone and clustered deployments.
> ⚠️ Note: The script installs required modules (MS Graph or MailKit) if not already present. Avoid running it if module installation could impact your environment.
> 🚨 Important: This script must be run in an elevated PowerShell session by a user with administrator rights on the Hyper-V server.
---
## Features
- Collects host system information
- Enumerates all virtual machines and their configurations
- Lists VM snapshots and calculates their age
- Reports replication status for VMs
- Gathers VHDX file details
- Extracts VM and management OS network adapter data
- Lists virtual switch configurations
- Reports CSV health and space utilization (clustered only)
- Includes cluster configuration and network details
- Generates a comprehensive HTML report with selectable styles
- Sends the report via email using MS Graph or MailKit
---
## Prerequisites
- PowerShell 5.1 or later
- Hyper-V role installed
- Required modules:
- `Hyper-V`
- `CimCmdlets`
- External scripts in the same directory:
- `GlobalVariables.ps1`
- `HtmlCode.ps1`
- `Functions.ps1`
- CSS styles in the `Style` subfolder:
- `StyleCSS-Minimal.ps1`
- `StyleCSS-Pro.ps1`
- `StyleCSS-ProDark.ps1`
- `StyleCSS-Colorful.ps1`
- `StyleCSS-Professional.ps1`
---
## Script Parameters
Defined in `GlobalVariables.ps1`:
- `$reportHtmlDir` Directory to save the HTML report
- `$reportHtmlName` Base name for the report file
- `$reportStyle` Style of the HTML report (`minimal`, `pro`, `prodark`, `colorful`, `professional`)
- `$clusterDeployment` Boolean flag for cluster support
- `$csvHealthInfoNeeded` Include CSV health info (clustered only)
- `$csvSpaceInfoNeeded` Include CSV space utilization (clustered only)
- `$clusterConfigInfoNeeded` Include cluster configuration details
- `$clusterNetworksInfoNeeded` Include cluster network details
- `$replicationInfoNeeded` Include replication info
- `$vhdxInfoNeeded` Include VHDX info
- `$vmnetInfoNeeded` Include VM network adapter info
- `$osNetInfoNeeded` Include management OS network adapter info
- `$vswitchInfoNeeded` Include virtual switch info
- `$reportHtmlRequired` Generate HTML report
- `$emailReport` Send report via email
- `$emailSystem` Email system to use (`msgraph` or `mailkit`)
- `$encryptedSMTPCredsFileName` Filename for encrypted SMTP credentials
---
## Output
- **HTML Report**: Saved in `$reportHtmlDir` with a timestamped filename.
- **Console Output**: Displays formatted tables for each section.
- **Email**: Sent if `$emailReport` is enabled and `$reportHtmlRequired` is true.
---
## Usage
```powershell
Start-Process powershell -Verb runAs -ArgumentList '.\Hyper-V-Report.ps1'
```
Ensure all required variables and modules are properly configured before execution.
---
## Sections in the Report
1. Host Info CPU, RAM, OS version, VHD volume stats
2. CSV Health Info CSV status and health (clustered only)
3. CSV Space Utilization CSV volume usage (clustered only)
4. VM Info Name, generation, memory, IP, state, uptime, replication
5. Snapshots Snapshot name, age, parent snapshot
6. Replication Status, health, last replication time
7. VHDX Info Format, type, size, fragmentation
8. VM Network Adapters MAC, IP, vSwitch, VLAN
9. Management OS Adapters IP, MAC, vSwitch, VLAN
10. Virtual Switches Name, type, uplinks, SET status
11. Cluster Configuration Cluster settings and roles
12. Cluster Networks Cluster network topology and status
---
## Support Script: Save-SafeCreds.ps1
To securely store SMTP credentials for email delivery, use the `Save-SafeCreds.ps1` script:
### Usage
```powershell
Start-Process powershell -Verb runAs -ArgumentList '.\Save-SafeCreds.ps1'
```
This script:
- Prompts for SMTP username and password
- Encrypts the credentials using the current user's context
- Saves them to an XML file (e.g., `EncryptedCreds.xml`)
- Ensures only the user who created the file can decrypt it
Make sure the filename matches the value of `$encryptedSMTPCredsFileName` in `GlobalVariables.ps1`.
---