Files
Sandbox/Azure-VMHardwareReport.ps1
Zack Meier 03dba08135 sync
2026-04-15 15:42:41 -05:00

91 lines
2.6 KiB
PowerShell

$Subscriptions = Get-AzSubscription
$AzureVMs = [System.Collections.ArrayList]@()
ForEach ($Subscription in $Subscriptions) {
Set-AzContext -Subscription $Subscription
$AllVMs = Get-AzVM
ForEach ($VM in $AllVMs) {
$VMSize = $null
$VMSizeSpecs = $null
$OSDisk = $null
$DataDisks = $null
$obj = $null
$VMSize = $VM.HardwareProfile.VMSize
$VMSizeSpecs = Get-AzVMSize -Location $VM.Location | Where-Object { $_.Name -eq $VMSize }
$OSDisk = $VM.StorageProfile.OSDisk
$DataDisks = $VM.StorageProfile.DataDisks
#$IpAddress = (Get-AzNetworkInterface | Where-Object {$_.Id -eq $VM.NetworkProfile.NetworkInterfaces.Id}).IpConfigurations.PrivateIpAddress
$obj = [PSCustomObject]@{
VMName = $VM.Name
Subscription = $Subscription.Name
ComputerName = $VM.OSProfile.ComputerName
Size = $VMSize
CPU = $VMSizeSpecs.NumberOfCores
Memory = ($VMSizeSpecs.MemoryInMb / 1024)
TotalDisk = ($OSDisk.DiskSizeGB + ($DataDisks.DiskSizeGB | Measure-Object -Sum).Sum)
OsDiskGB = $OSDisk.DiskSizeGB
DataDisksGB = $DataDisks.DiskSizeGB -join ", "
}
$null = $AzureVMs.Add($obj)
}
}
$SharePointList = Get-ITDVMwareSharePointVMGuestList | Where-Object { $_.Status -notlike "D*" -and ($_.DataCenter -like "MAC*" -or $_.DataCenter -like "MAG*") }
$AzureToSharePointCompare = [System.Collections.ArrayList]@()
ForEach ($AzVM in $AzureVMs) {
$SPItem = $null
Write-Verbose -Message ("Start " + $AzVM.VMName) -Verbose
$SPItem = $SharePointList | Where-Object { $_.Title -match $AzVM.VMName.split('-')[1] }
Write-Verbose -Message ("Found " + $SPItem.Count + " possible SharePoint matches") -Verbose
$obj = [PSCustomObject]@{
AzVMName = $AzVM.VMName;
#AzComputerName = $AzVM.ComputerName
SPTitle = $SPItem.Title;
CPU = $null;
MemoryGB = $null;
DiskTotal = $null;
}
Write-Verbose -Message "One match found, starting compare"
If ($SPItem.Processors -ne $AzVM.CPU) {
$obj.CPU = $false
}
Else {
$obj.CPU = $true
}
If ($SPItem.RAM -ne $AzVM.Memory) {
$obj.MemoryGB = $false
}
Else {
$obj.MemoryGB = $true
}
$SPDiskTotalGB = $SPItem.Disk1 + $SPItem.Disk2 + $SPItem.Disk3 + $SPItem.Disk4
If ($SPDiskTotalGB -ne $AzVM.TotalDisk) {
$obj.DiskTotal = $false
}
Else {
$obj.DiskTotal = $true
}
$null = $AzureToSharePointCompare.Add($obj)
}