Param( $SubscriptionID, $ResourceGroupName, $SourceInstanceName, $SourceDatabaseName, $DestinationInstanceName, $DestinationDatabaseName, $PointInTime, [switch]$NonInteractive ) Write-Verbose "- $($PSBoundParameters | ConvertTo-Json)" Login-AzAccount if(-not $SubscriptionID) { $Subscription = Get-AzSubscription | Out-Gridview -passthru # Select your subscription } else { $Subscription = Get-AzSubscription -SubscriptionId $SubscriptionID } Select-AzSubscription -Subscription $Subscription.SubscriptionId if(-not $ResourceGroupName) { $ResourceGroup = Get-AzResourceGroup | Out-Gridview -passthru # Select your resource group } else { $ResourceGroup = Get-AzResourceGroup -ResourceGroupName $ResourceGroupName } if(-not $SourceInstanceName) { $SourceInstance = Get-AzSqlInstance | Out-Gridview -Passthru # Select the source instance for the restore } else { $SourceInstance = Get-AzSqlInstance -Name $SourceInstanceName } if(-not $DestinationInstanceName) { $DestinationInstance = Get-AzSqlInstance | Out-GridView -PassThru # Select the Target instance for the restore } else { $DestinationInstance = Get-AzSqlInstance -Name $DestinationInstanceName } if(-not $SourceDatabaseName) { $SourceDatabase = Get-AzSqlInstanceDatabase -InstanceName $SourceInstance.ManagedInstanceName -ResourceGroupName $ResourceGroup.ResourceGroupName | Out-GridView -PassThru # Select Database to restore } else { $SourceDatabase = Get-AzSqlInstanceDatabase -InstanceName $SourceInstance.ManagedInstanceName -Name $SourceDatabaseName -ResourceGroupName $ResourceGroup.ResourceGroupName } if(-not $DestinationDatabaseName) { $DestinationDatabaseName = read-host -Prompt 'Destination DB name' } if(-not $PointInTime) { $PointInTime = Get-Date } $ParamRestoreAzSqlinstanceDatabase = @{ FromPointInTimeBackup = $true InstanceName = $SourceInstance.ManagedInstanceName Name = $SourceDatabase.Name ResourceGroupName = $ResourceGroup.ResourceGroupName PointInTime = $PointInTime TargetInstanceDatabaseName = $DestinationDatabaseName TargetResourceGroupName = $ResourceGroup.ResourceGroupName TargetInstanceName = $DestinationInstance.ManagedInstanceName } Write-Verbose @" @Param = @{ `$SubscriptionID = '$($Subscription.SubscriptionID)' `$ResourceGroupName = '$($ResourceGroup.ResourceGroupName)' `$SourceInstanceName = '$($SourceInstance.ManagedInstanceName)' `$SourceDatabaseName = '$($SourceDatabase.Name)' `$DestinationInstanceName = '$($DestinationInstance.ManagedInstanceName)' `$DestinationDatabaseName = '$($DestinationDatabaseName)' } "@ if(-not $NonInteractive) { write-warning "$($ParamRestoreAzSqlinstanceDatabase | ConvertTo-JSon)" Write-Warning "Continue with Restore?" -WarningAction Inquire } Restore-AzSqlinstanceDatabase @ParamRestoreAzSqlInstanceDatabase