No perfect answer but maybe it can push you in the right direction.
create table #tbl (name varchar(128), s bigint)
declare @db varchar(128)
declare @sql varchar(2048)
select @db = ''
while exists (select Name from master..sysdatabases where name > @db)
begin
select top 1 @db = Name from master..sysdatabases where name > @db order by Name
select @sql = 'insert into #tbl (Name, s) select ''' + @db + ''', sum(size) from ' + @db + '..Sysfiles'
exec(@sql)
end
select * from #tbl
drop table #tbl
/T