Q: Enumerating the list of databases in Azure SQL Server We flag databases with extended properties to identify databases that are compatible with our software.  We present the user with a list of compatible databases to connect to.
To date, we've used sp_databases on a local SQL Express instance to do this.  We've used this stored procedure over querying sys.databases because our users are known to delete MDF/LDF files for some reason.  In our experience, sp_databases won't return databases if their underlying MDF/LDF files have been deleted.
As best I can tell, sp_databases isn't supported on Azure SQL Server.  I've tried changing code over to query sys.databases since we won't have to worry about users deleting MDF/LDF files in an Azure environment, however, that always returns an empty resulset when run from a .Net app.
What's the right approach for querying for the set of databases on an Azure SQL Server, so that we can then filter out databases based on extended property values?  Are there additional things that need to be granted to the user doing the query?

A: You can use SQL Server Management Objects (SMO). The following is an example of using SMO from PowerShell.
Function Get-Databases {
    Param(
    [string]$location
    , [string]$server
    , [string]$smolibrary
    , [string]$daclibrary
    , [string]$username
    , [string]$password
    )
    Process
    {
        $dt = Get-Date -uFormat "%Y%m%d"

        Add-Type -Path $smolibrary
        $scon = "Data Source=$server.database.windows.net;Initial Catalog=master;User ID=$username;Password=$password;"
        $servercon = New-Object Microsoft.SqlServer.Management.Common.ServerConnection
        $servercon.ConnectionString = $scon
        $srv = New-Object Microsoft.SqlServer.Management.SMO.Server($servercon)

        foreach ($db in $srv.Databases | Where-Object {$_.Name -ne "master"})
        {
            $database = $db.Name
            ###  Print or save $database
        }
    }
}

