Federico Lillacci 28ca3732f3 Update README.md
2025-10-27 06:19:19 +01:00
2025-10-27 05:35:22 +01:00
2025-10-27 06:03:49 +01:00
2025-10-26 19:44:44 +01:00
2025-10-26 19:44:44 +01:00
2025-10-26 19:44:44 +01:00
2025-10-26 19:44:44 +01:00
2025-10-17 17:56:37 +02:00
2025-10-27 06:19:19 +01:00
2025-10-26 19:44:44 +01:00

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

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

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.


Description
No description provided
Readme GPL-3.0 88 KiB
Languages
PowerShell 100%