Functions/Get-AHVMBackupStatus.ps1
Function Get-AHVMBackupStatus { <# .SYNOPSIS Gets the all VMs in the subscription and their backup status .DESCRIPTION Gets the all VMs in the subscription and their backup status .PARAMETER AllSubscriptions Run this command against all subscriptions. .PARAMETER Subscription Specifies the subscription to run against. The default is the current subscription. .EXAMPLE Get-AHVMBackupStatus .INPUTS String .OUTPUTS Selected.System.String .NOTES Author: Paul Harrison #> [CmdletBinding()] param ( [Switch] $AllSubscriptions, [Parameter(ValueFromPipeline = $true)] $Subscription ) begin { $MyScriptBlock = { $Sub = (Get-AzContext).Subscription.Name try { az account set --subscription ((Get-AzContext).Subscription.Id) } catch { throw } $BackedUpVMs = Get-AHBackedUpVMs #-AllSubscriptions:$AllSubscriptions -Subscription:$Subscription Get-AzVm | Where-Object { $_.id -notin $BackedUpVMs.Id } | ForEach-Object { $VM = "" | Select-Object 'Subscription', 'VMName', 'VMResourceGroupName', 'VaultName', 'VaultResourceGroupName', 'VMStillExists', 'LastBackupStatus', 'LastBackupTime', 'Id' $VM.Subscription = $Sub $VM.VMName = $_.Name $VM.VMResourceGroupName = $_.ResourceGroupName $VM.VMStillExists = $true $VM.VaultResourceGroupName = $Null $VM.VaultName = $Null $VM.LastBackupStatus = $Null $VM.LastBackupTime = $Null $VM.Id = $_.Id $BackedUpVMs += $VM } $BackedUpVMs } } process { if ($Subscription) { $Subscription | Invoke-AzureCommand -ScriptBlock $MyScriptBlock } else { Invoke-AzureCommand -ScriptBlock $MyScriptBlock -AllSubscriptions:$AllSubscriptions } } } |