Private/Clear-ScaleSetPreparationResources.ps1

function Global:Clear-ScaleSetPreparationResources {
    [CmdletBinding()]
    <#
    .SYNOPSIS
        ...
    .DESCRIPTION
        ...
    #>

    param(        
        [Parameter(Mandatory = $true)]
        [string]
        $ResourceGroupName,        
        [HashTable]
        $Tags
    )
    process {        
        if (-not(Get-AzResource -ResourceGroupName $ResourceGroupName -Tag $Tags -ErrorAction SilentlyContinue)){
            return
        }
        Write-CustomHost "Cleaning up resources..."
        Write-CustomHost "Removing VM..."
        Get-AzResource -ResourceGroupName $ResourceGroupName -Tag $Tags | Where-Object {$_.ResourceType -like 'Microsoft.Compute/virtualMachines'} | Remove-AzResource -Force | Out-Null
        Write-CustomHost "Removing child-resources..."
        foreach ($resource in Get-AzResource -ResourceGroupName $ResourceGroupName -Tag $Tags){
            Write-CustomHost "Removing $($resource.Name)..."
            $resource | Remove-AzResource -Force
        }
        #Get-AzResource -ResourceGroupName $ResourceGroupName -Tag $Tags | Remove-AzResource -Force | Out-Null
        #Get-AzResource -ResourceGroupName $ResourceGroupName -Tag $Tags | Remove-AzResource -Force
        Write-CustomHost -Message "Done."
    }
}