GinShell.Azure/Public/Get-GsAzureVmAndDisk.ps1
|
function Get-GsAzureVmAndDisk { param ( [Parameter(Mandatory = $true)] [string[]]$VmNames ) if (-not $VmNames -or $VmNames.Count -eq 0) { Write-GsLog -Message "No VM names provided." -Type Error return } Write-GsLog -Message "Getting VM and disk list from Azure..." -Type Info try { $vmList = Get-AzVM $diskList = Get-AzDisk Write-GsLog -Message "Filtering VMs and their associated disks..." -Type Debug $selectedVms = $vmList | Where-Object { $_.Name -in $VmNames } if (-not $selectedVms -or $selectedVms.Count -eq 0) { Write-GsLog -Message "Unable to find any VMs matching the provided names: $($VmNames -join ', ')." -Type Error return } $selectedVmIds = $selectedVms.Id $associatedDisks = $diskList | Where-Object { $_.ManagedBy -in $selectedVmIds } Write-GsLog -Message "Found $($selectedVms.Count) VM(s) and $($associatedDisks.Count) associated disk(s)." -Type Info return [PSCustomObject]@{ VMs = $selectedVms Disks = $associatedDisks } } catch { Write-GsLog -Message "Failed to get VM or disk information: $($_.Exception.Message)" -Type Error return } } |