Getting restore points out of Azure can be like getting blood from a stone. The portal likes to always set a custom filter showing only ~90 days and your Powershell cmdlet only allows for a 30 day interval for retrieval dates. When running ‘Get-AzRecoveryServicesBackupRecoveryPoint’ you get the following:
Get-AzRecoveryServicesBackupRecoveryPoint : Time difference should not be more than 30 days
Sigh.. I just want all my restore points for a virtual machine please! All of them, because its my butt if for some reason I don’t have them. Using something like this can be useful to audit your backups against business needs for data retention.
Example: Get recovery points from the last two years for a single VM
# ------Variables--------------# $retentionDays = 730 $vaultName = "PROD-RSV" $vaultResourceGroup = "PROD-RSV-RG" $friendlyName = "Server1" #------------------------------# $vault = Get-AzRecoveryServicesVault -ResourceGroupName $vaultResourceGroup -Name $vaultName $Container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVM -Status Registered -FriendlyName $friendlyName -VaultId $vault.ID $BackupItem = Get-AzRecoveryServicesBackupItem -Container $Container -WorkloadType AzureVM -VaultId $vault.ID $startingPoint = -25 $finishingPoint = 0 $jobsArray = @() Do { $StartDate = (Get-Date).AddDays($startingPoint) $EndDate = (Get-Date).AddDays($finishingPoint) $RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $Startdate.ToUniversalTime() -EndDate $Enddate.ToUniversalTime() -VaultId $vault.ID $jobsArray += $RP $startingPoint = $startingPoint - 25 $finishingPoint = $finishingPoint -25 }until($startingPoint -le -($retentionDays)) $jobsArray | FT -AutoSize -Property RecoveryPointid, RecoveryPointTime, RecoveryPointType
The example above will go back 2 years (730 Days). This outputs to a table but you can quiet easily export to a CSV via:
$jobsArray | Export-Csv c:\temp\restores.csv -NoTypeInformation
Enjoy.