From ab3332f07dc425e195ff2b438f0a8728f6c6fb3b Mon Sep 17 00:00:00 2001 From: "UnknownUser @ MacBook-Air-GS-6.local" Date: Tue, 20 Aug 2024 16:17:10 +0200 Subject: [PATCH 1/2] works with WindowsServer2022, even with no virtual disks --- Get-HyperVReport.ps1 | 95 ++++++++++++++++++++++++++++++-------------- 1 file changed, 65 insertions(+), 30 deletions(-) diff --git a/Get-HyperVReport.ps1 b/Get-HyperVReport.ps1 index 9260112..00ebd73 100644 --- a/Get-HyperVReport.ps1 +++ b/Get-HyperVReport.ps1 @@ -1,4 +1,4 @@ -<# + <# .SYNOPSIS Get-HyperVReport.ps1 (aka Hyper-V Reporting Script) can be used to report Hyper-V Cluster or Standalone environments. @@ -814,7 +814,7 @@ $osVersion = sGet-Wmi -ComputerName $env:COMPUTERNAME -Namespace root\Cimv2 -Cla if ($osVersion) { - if (($OsVersion -like "6.2*") -or ($OsVersion -like "6.3*")) + if (($OsVersion -like "6.2*") -or ($OsVersion -like "6.3*") -or ($OsVersion -like "10.0*")) { if ($osName -like "Microsoft Windows 8*") { @@ -914,7 +914,7 @@ $osVersion = sGet-Wmi -ComputerName $env:COMPUTERNAME -Namespace root\Cimv2 -Cla } else { - sPrint -Type 0 -Message "$($env:COMPUTERNAME.ToUpper()): Incompatible operating system version detected. Supported operating systems are Windows Server 2012 and Windows Server 2012 R2." -WriteToLogFile $True + sPrint -Type 0 -Message "$($env:COMPUTERNAME.ToUpper()): Incompatible operating system version $osVersion detected. Supported operating systems are Windows Server 2012 and Windows Server 2012 R2." -WriteToLogFile $True sPrint -Type 0 -Message "Script terminated!" -WriteToLogFile $True Break } @@ -1151,7 +1151,7 @@ if ($Cluster) { $osVersion = $null $getClusterOwnerNode = Get-ClusterNode -Cluster $ClusterName -Name $clusterOwnerHostName $osVersion = ($getClusterOwnerNode.MajorVersion).ToString() + "." + ($getClusterOwnerNode.MinorVersion).ToString() - if (($osVersion -like "6.2") -or ($osVersion -like "6.3")) + if (($osVersion -like "6.2") -or ($osVersion -like "6.3") -or ($osVersion -like "6.3")) { if ((Get-WindowsFeature -ComputerName $clusterOwnerHostName -Name "Hyper-V").Installed) { @@ -1180,7 +1180,7 @@ if ($Cluster) { } else { - sPrint -Type 2 -Message "$($ClusterName.ToUpper()): Incompatible operating system version detected. Supported operating systems are Windows Server 2012 and Windows Server 2012 R2." -WriteToLogFile $True + sPrint -Type 2 -Message "$($ClusterName.ToUpper()): Incompatible operating system version $osVersion detected. Supported operating systems are Windows Server 2012 and Windows Server 2012 R2." -WriteToLogFile $True sPrint -Type 0 -Message "Script terminated!" -WriteToLogFile $True Break } @@ -1239,7 +1239,7 @@ if ($VMHost) { if ($OsVersion) { - if (($OsVersion -like "6.2*") -or ($OsVersion -like "6.3*")) + if (($OsVersion -like "6.2*") -or ($OsVersion -like "6.3*") -or ($OsVersion -like "10.0*")) { if ((Get-WindowsFeature -ComputerName $ComputerName -Name "Hyper-V").Installed) { @@ -2137,7 +2137,7 @@ ForEach ($VMHostItem in $VMHosts) { if ($vmDisks -eq $null) { $vmDiskOutput = " -

 Does not have a virtual disk 

" +

 Does not have a virtual disk 

" $highL = $true } else @@ -2372,11 +2372,20 @@ ForEach ($VMHostItem in $VMHosts) { $outVmMemMin = sConvert-Size -DiskVolumeSpace $VM.MemoryMinimum -DiskVolumeSpaceUnit byte # Charge chargerVmMemoryTable - $chargerVmMemoryTable =" -

$($outVmMemStartup[0])
$($outVmMemStartup[1])

-

$($outVmMemMin[0])
$($outVmMemMin[1])

-

$($outVmMemMax[0])
$($outVmMemMax[1])

-

$($outVmMemAssigned[0])
$($outVmMemAssigned[1])

" + if ($($rowSpanCount) -ne 0) { + $chargerVmMemoryTable =" +

$($outVmMemStartup[0])
$($outVmMemStartup[1])

+

$($outVmMemMin[0])
$($outVmMemMin[1])

+

$($outVmMemMax[0])
$($outVmMemMax[1])

+

$($outVmMemAssigned[0])
$($outVmMemAssigned[1])

" + } + else { + $chargerVmMemoryTable =" +

$($outVmMemStartup[0])
$($outVmMemStartup[1])

+

$($outVmMemMin[0])
$($outVmMemMin[1])

+

$($outVmMemMax[0])
$($outVmMemMax[1])

+

$($outVmMemAssigned[0])
$($outVmMemAssigned[1])

" + } } else { @@ -2384,26 +2393,51 @@ ForEach ($VMHostItem in $VMHosts) { $outVmMemStartup = sConvert-Size -DiskVolumeSpace $VM.MemoryStartup -DiskVolumeSpaceUnit byte # Charge chargerVmMemoryTable - $chargerVmMemoryTable =" -

$($outVmMemStartup[0])
$($outVmMemStartup[1])

" + if ($($rowSpanCount) -ne 0) { + $chargerVmMemoryTable =" +

$($outVmMemStartup[0])
$($outVmMemStartup[1])

" + } + else { + $chargerVmMemoryTable =" +

$($outVmMemStartup[0])
$($outVmMemStartup[1])

" + } } # Data Line - $chargerVmTable +=" - -

$($outVmName) * $($outVmGenVer)
IsClustered:$($outVmIsClustered)

-

$($outVmState)

-

$($outVmUptimeDays)$($outVmUptime)

-

$($outVmHost)

-

$($outVmCPU)
CPU

" - $chargerVmTable += $chargerVmMemoryTable - - $chargerVmTable +=" -

$($outVmIs) *

-

$($outVmChekpoint)

- $($outVmRepl) - $($outVmNetAdapter)" - $chargerVmTable += $vmDiskOutput + if ($($rowSpanCount) -ne 0) { + $chargerVmTable +=" + +

$($outVmName) * $($outVmGenVer)
IsClustered:$($outVmIsClustered)

+

$($outVmState)

+

$($outVmUptimeDays)$($outVmUptime)

+

$($outVmHost)

+

$($outVmCPU)
CPU

" + $chargerVmTable += $chargerVmMemoryTable + + $chargerVmTable +=" +

$($outVmIs) *

+

$($outVmChekpoint)

+ $($outVmRepl) + $($outVmNetAdapter)" + $chargerVmTable += $vmDiskOutput + } + else { + $chargerVmTable +=" + +

$($outVmName) * $($outVmGenVer)
IsClustered:$($outVmIsClustered)

+

$($outVmState)

+

$($outVmUptimeDays)$($outVmUptime)

+

$($outVmHost)

+

$($outVmCPU)
CPU

" + $chargerVmTable += $chargerVmMemoryTable + + $chargerVmTable +=" +

$($outVmIs) *

+

$($outVmChekpoint)

+ $($outVmRepl) + $($outVmNetAdapter)" + $chargerVmTable += $vmDiskOutput + } # Output Data if ($HighlightsOnly -eq $false) @@ -3464,4 +3498,5 @@ if ($SendMail -or $SMTPServer) sPrint -Type 1 "Completed!" -WriteToLogFile $True sPrint -Type 5 -Message "----- End -----" -WriteToLogFile $true -#endregion \ No newline at end of file +#endregion + From 9453de283890a309a81e9c841385de0a51aee2ba Mon Sep 17 00:00:00 2001 From: "UnknownUser @ MacBook-Air-GS-6.local" Date: Tue, 20 Aug 2024 16:38:19 +0200 Subject: [PATCH 2/2] simple batch script to start the reporting script for localhost --- Get-HyperVReport.bat | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Get-HyperVReport.bat diff --git a/Get-HyperVReport.bat b/Get-HyperVReport.bat new file mode 100644 index 0000000..56e966e --- /dev/null +++ b/Get-HyperVReport.bat @@ -0,0 +1,2 @@ +powershell -file .\Get-HyperVReport.ps1 -VMHost localhost +pause