<# .DESCRIPTION An example runbook which takes On-demand backup for all file shares protected by Azure Backup in a subscription using the Run As Account (Service Principal) .NOTES AUTHOR: Azure Backup LASTEDIT: 12/25/18 #> Param ( [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $AzureSubscriptionId, [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [Int] $RetentionDays=30 ) $connectionName = "AzureRunAsConnection" try { # Get the connection "AzureRunAsConnection " $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName "Logging in to Azure..." Add-AzureRmAccount ` -ServicePrincipal ` -TenantId $servicePrincipalConnection.TenantId ` -ApplicationId $servicePrincipalConnection.ApplicationId ` -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint } catch { if (!$servicePrincipalConnection) { $ErrorMessage = "Connection $connectionName not found." throw $ErrorMessage } else{ Write-Error -Message $_.Exception throw $_.Exception } } Select-AzureRmSubscription -SubscriptionId $AzureSubscriptionId #Get all ARM vault resources from all resource groups $vaults = Get-AzureRmRecoveryServicesVault $currentDate = Get-Date $RetailTill = $currentDate.AddDays($RetentionDays) Write-Output ("Recoverypoints will be retained till " + $RetailTill) foreach ($vault in $vaults) { Write-Output ("Working on Vault: " + $vault.Name) Set-AzureRmRecoveryServicesVaultContext -Vault $vault $containers = Get-AzureRmRecoveryServicesBackupContainer -ContainerType AzureStorage Write-Output ("Got # of Backup Containers: " + $containers.Count) ForEach ($container in $containers) { Write-Output ("Working on container: " + $container.FriendlyName) $fileshares = Get-AzureRmRecoveryServicesBackupItem -WorkloadType AzureFiles -Container $container Write-Output ("Got # of Backup Items/shares: " + $fileshares.Count) ForEach($fileShare in $fileshares) { Write-Output ("Working on FileShare: " + $fileShare.Name) Backup-AzureRmRecoveryServicesBackupItem -Item $fileShare -ExpiryDateTimeUTC $RetailTill } Write-Output ("") } Write-Output ("") }